国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文看懂碼靈半導體CFW32C7UL系列MPU產品應用(三): 國際標準加解密算法

碼靈半導體 ? 2022-06-13 10:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

歡迎再次來到“碼靈半導體CFW32C7UL系列產品應用介紹”連載專題。通過前幾期對CFW32C7UL系列的國密算法介紹,相信大家對碼靈半導體CFW32C7UL系列的國密硬件模塊有了充分的了解。

由于發展歷程原因,目前市場上商用密碼使用仍然以國際標準加解密算法為主,不過隨國家對國密算法的推進,未來國密算法的應用也會越來越廣泛。碼靈半導體CFW32C7UL系列的加解密模塊除了之前介紹的國密密碼算法以外,還支持國際標準算法的AES加解密算法和SHA-1、SHA-256哈希算法。本專題聚焦于CFW32C7UL系列所支持的國際標準加解密算法硬件模塊:AES分組加解密算法和SHA哈希算法。以下我們具體介紹下CFW32C7UL系列AES和SHA模塊的使用以及加解密的速度等。
一、AES分組加解密算法
AES是Advanced Encryption Standard的縮寫,即高級加密標準,在密碼學中又稱Rijndael加密法,是美國聯邦政府采用的一種區塊加密標準。高級加密標準是由美國國家標準與技術研究院(NIST)于2001年11月26日發布于FIPS PUB 197,并在2002年5月26日成為有效的標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用,至2006年,高級加密標準已然成為對稱密鑰加密中最流行的算法之一。
1、CFW32C7UL AES分組算法的實現
CFW32C7UL 系列的AES模塊可完成標準AES加解密運算和AES-CM、AES-F8加密運算。標準AES算法即AES標準(FIPS-197)中規定的算法。AES-CM和AES-F8算法在The Secure Real-time Transport Protocol(SRTP)中有詳細說明,這兩種算法均以標準AES算法為基礎,并對標準AES算法進行迭代運用。
AES模塊中的標準AES算法除了支持CPU輸入輸出外,還支持DMA輸入和DMA輸出,而AES-CM、AES-F8只支持DMA輸出。
2、CFW32C7UL AES分組算法的使用
開發模式一:裸機SDK
目前CFW32C7UL系列裸機SDK支持AES-CM, AES-F8,以及標準的AES加解密方式。其中AES-CM和AES-F8只支持加密,不支持解密。標準的AES方式支持加密和解密。
在CFW32C7UL系列 AES的SDK中有個關鍵的CIPHER_AES_Init_TypeDef結構體:
typedef struct {
uint32_t mode;
uint32_t encrypt;
uint32_t type;
uint32_t key_len;
uint32_t blk_num;
uint32_t key[8];
uint32_t key_f8_mask[8];
uint32_t *input_data;
uint32_t *output_data;
}CIPHER_AES_Init_TypeDef;
在使用AES算法之前需要初始化CIPHER_AES_Init_TypeDef結構體,初始化范例:
cipher_aes_init.encrypt = CIPHER_AES_CTRL_ENCRYPT;
cipher_aes_init.input_data = (uint32_t *)aes_in_data;
cipher_aes_init.output_data = (uint32_t *)aes_out_data;
cipher_aes_init.blk_num = 1; 加解密輪數
cipher_aes_init.key_len = CIPHER_AES_KEY_LEN_128BIT;
cipher_aes_init.key[0] = 0x21212121; 設置AES 密鑰,可自定義
cipher_aes_init.key[1] = 0x43434343;
cipher_aes_init.key[2] = 0x65656565;
cipher_aes_init.key[3] = 0x87878787;
配置cipher_aes_init結構體的初始化參數后,便可以進行相對應的AES加密運算。
AES CM加密算法:
cipher_aes_init.mode = CIPHER_AES_MODE_AES_CM;
HAL_CIPHER_CM_AES(&cipher_aes_init);
AES F8加密算法:
cipher_aes_init.mode = CIPHER_AES_MODE_AES_F8;
HAL_CIPHER_F8_AES(&cipher_aes_init);
標準AES 加解密方式:
加密范例:
cipher_aes_init.encrypt = CIPHER_AES_CTRL_ENCRYPT;
cipher_aes_init.mode = CIPHER_AES_MODE_AES_STD;
HAL_CIPHER_StdAES(&cipher_aes_init);
解密范例:
cipher_aes_init.encrypt = CIPHER_AES_CTRL_DECRYPT;
cipher_aes_init.mode = CIPHER_AES_MODE_AES_STD;
HAL_CIPHER_StdAES(&cipher_aes_init);
開發模式二:Linux SDK
通過操作linux系統中/dev/wokoo_aes ,就可以進行標準AES分組加密算法的運算。
AES算法底層接口
open:打開設備節點
read:讀取加密/解密后的數據
write:寫入加密前/解密前的數據以及密鑰和配置
接口描述:
open:
函數原型 static int uac_open(struct inode *inode, struct file * file)
參數 file:文件名
返回值 成功0,其它失敗
read:
函數原型 static ssize_t uac_read(struct file * file, char __user *buffer, size_t size , loff_t *p)
參數 file:文件名,buffer:讀出數據緩存,size:讀出數據長度
返回值 成功0,其它失敗
write:
函數原型 static ssize_t uac_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
參數 file:文件名,buf:寫入數據緩存,count:寫入數據長度
返回值 成功0,其它失敗
使用示例:
fd = open("/dev/wokoo_aes", O_RDWR); 打開aes節點
write(fd, &wokoo_aes, sizeof(struct wokoo_aes_t)); 寫入明文/密文,密鑰等配置
read(fd, wokoo_aes.output_data, sizeof(wokoo_aes.output_data)); 讀出密文/明文
注:這里的write寫入的wokoo_aes結構體,如同在裸機中使用一樣,會在調用前初始化一些參數,通過write把密鑰和模式配置寫入。
3、CFW32C7UL AES算法的效率:
目前碼靈半導體CFW32C7UL系的可以實現標準AES加密速率是85KB/s。
二、SHA哈希算法模塊
1、CFW32C7UL SHA哈希算法的實現
CFW32C7UL系列的SHA哈希算法支持SHA-1以及SHA-256。SHA1是SHA的較舊版本,可生成160位哈希值,而SHA256是SHA2的一種類型,可生成256位哈希值。
CFW32C7UL系列的SHA模塊支持DMA輸入和CPU輸入,輸出僅支持CPU輸出。

2、CFW32C7UL SHA算法的使用
開發模式一:裸機SDK
目前裸機開發支持SHA-1以及SHA-256兩種哈希算法SDK,兩種算法分別有CPU輸入和DMA輸入的方式。
在CFW32C7UL系列 SHA的SDK中有個關鍵的CIPHER_SHA_Init_TypeDef結構體,結構體定義如下:
typedef struct {
uint32_t mod;
uint32_t line_num;
uint32_t *input_data;
uint32_t *output_data;
}CIPHER_SHA_Init_TypeDef;
使用SHA SDK之前,需初始化這個結構體。包括設置數據量和設置數據的輸入輸出流。
cipher_sha_init.line_num = 0x01; 設置SHA的數據輸入輪數為1
cipher_sha_init.input_data = (uint32_t *)sha_in_data; 設置SHA 輸入流
cipher_sha_init.output_data = (uint32_t *)sha_out_data; 設置SHA輸出流
配置完cipher_sha_init結構體的初始化參數后,便可以進行相對應的SHA哈希運算。
調用HAL_CIPHER_SHA_DMA()進行DMA輸入方式SHA哈希運算。
cipher_sha_init.mod = CIPHER_SHA_MOD_SHA1; 配置SHA-1算法
HAL_CIPHER_SHA_DMA(&cipher_sha_init); 啟動SHA-1算法 (DMA Input)
cipher_sha_init.mod = CIPHER_SHA_MOD_SHA256; 配置SHA-256算法
HAL_CIPHER_SHA_DMA(&cipher_sha_init); 啟動SHA-256算法 (DMA Input)
調用HAL_CIPHER_SHA_CPU ()進行 CPU輸入方式SHA哈希運算。
cipher_sha_init.mod = CIPHER_SHA_MOD_SHA1; 配置SHA-1算法
HAL_CIPHER_SHA_CPU (&cipher_sha_init); 啟動SHA-1算法(CPU Input)
cipher_sha_init.mod = CIPHER_SHA_MOD_SHA256; 配置SHA-256算法
HAL_CIPHER_SHA_CPU (&cipher_sha_init); 啟動SHA-256算法(CPU Input)
開發模式二:Linux SDK
通過操作linux系統中/dev/wokoo_sha ,便可以進行SHA算法的運算。
SHA算法底層接口
open:打開設備節點
read:讀取哈希后的數據
write:寫入哈希的數據以及配置模式
接口描述
open:
函數原型 static int uac_open(struct inode *inode, struct file * file)
參數 file:文件名
返回值 成功0,其它失敗
read:
函數原型 static ssize_t uac_read(struct file * file, char __user *buffer, size_t size , loff_t *p)
參數 file:文件名,buffer:讀出數據緩存,size:讀出數據長度
返回值 成功0,其它失敗
write:
函數原型 static ssize_t uac_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
參數 file:文件名,buf:寫入數據緩存,count:寫入數據長度
返回值 成功0,其它失敗
使用范例:
fd = open("/dev/wokoo_sha", O_RDWR); 打開sha節點
write(fd, &wokoo_sha, sizeof(struct wokoo_sha_t)); 寫入需要哈希的數據
read(fd, wokoo_sha.output_data, sizeof(wokoo_sha.output_data)); 讀出哈希后的數據
類似地,LINUX在初始化wokoo_sha結構體時會根據給定參數選擇不同的算法,輸入數據輪數和輸入方式,根據不同的參數計算不同的結果。如下示例:
wokoo_sha.bit_mod = CIPHER_SHA_MOD_SHA256; 選擇SHA-256方式
wokoo_sha.data_mod = CIPHER_SHA_TYPE_DMA; 選擇DMA輸入方式
wokoo_sha.line_num = 1; 設置數據輸入輪數為1

3、CFW32C7UL SHA算法的效率
目前碼靈半導體CFW32C7UL系列SHA-1以及SHA-256的加密速率可以實現87KB/s。
通過這幾期對碼靈半導體CFW32C7UL系列的國密及國際標準加解密算法的介紹,相信大家對CFW32C7UL系列的加解密模塊有一個相對全面的了解。國密算法與國際標準加解密算法的對標關系是:國密算法的SM4和國際標準加解密算法AES對標,國密算法的SM3算法與國際標準加解密算法MD5、SHA-256等哈希算法對標,國密算法的SM2算法與國際標準加解密算法RSA、ECC算法對標。其實CFW32C7UL系列在芯片安全機制方面,除了加解密模塊外還有其它的安全特性和功能配置,那它們具體都是什么呢?又有什么特點呢?讓我們帶著這些問題,在下期中繼續探尋吧。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    147

    文章

    18924

    瀏覽量

    398018
  • MPU
    MPU
    +關注

    關注

    0

    文章

    454

    瀏覽量

    51321
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    深圳市薩科微slkor半導體有限公司是宋仕強于2015年在深圳市華強北成立,當時掌握了行業領先的第半導體

    步,并在競爭激烈的半導體市場中逐漸樹立品牌形象。隨后在2017年,公司獲得了包括歐盟RoHS和REACH符合性報告在內的認證,進步提升了其信譽度及對國際客戶的吸引力,在內部管理升級,逐漸規范化、
    發表于 01-31 08:46

    UL 60335檢測報告是什么

    UL60335檢測報告是依據美國保險商實驗室(UnderwritersLaboratories,簡稱UL)所采用的國際標準IEC60335系列標準
    的頭像 發表于 11-05 14:50 ?565次閱讀
    <b class='flag-5'>UL</b> 60335檢測報告是什么

    SM4算法實現分享(算法原理

    SM4分組加密算法采用的是非線性迭代結構,以字為單位進行加密、解密運算,每次迭代稱為輪變換,每輪變換包括S盒變換、非線性變換、線性變換、合成變換。加解密
    發表于 10-30 08:10

    Camellia算法的實現二(基于開源蜂鳥E203協處理器)

    篇分享文檔介紹了Camellia算法的基本原理,這篇文檔我們來介紹Camellia的具體實現方式。 如上圖所示為Camellia加解密系統的結構,PC端上位機通過串
    發表于 10-30 06:35

    AES加解密算法邏輯實現及其在蜂鳥E203SoC上的應用介紹

    這次分享我們會簡要介紹AES加解密算法的邏輯實現,以及如何將AES算法做成硬件協處理器集成在蜂鳥E203 SoC上。 AES算法介紹 AES算法
    發表于 10-29 07:29

    基于蜂鳥E203的AES加解密NICE協處理單元設計

    : 工程設計主要分成個部分:軟件上指令拓展、接口調度、硬件協同優化。 1.軟件上指令拓展 我們采用中等粒度方式設計了6條拓展指令,通過適當組合,可以支持五種加解密模式。 2.接口調度 接口
    發表于 10-29 06:37

    半導體閃耀工博會,全系EtherCAT芯片與解決方案引領工控創新

    ,與各行業伙伴深度探討工控領域的最新發展趨勢和技術創新。展會上,半導體核心展區亮相了CF110x系列EtherCAT從站控制器芯片及多元創新產品
    的頭像 發表于 09-23 18:40 ?749次閱讀
    <b class='flag-5'>碼</b><b class='flag-5'>靈</b><b class='flag-5'>半導體</b>閃耀工博會,全系EtherCAT芯片與解決方案引領工控創新

    harmony-utils之AES,AES加解密

    harmony-utils之AES,AES加解密 harmony-utils 簡介與說明 [harmony-utils] 款功能豐富且極易上手的HarmonyOS工具庫,借助眾多實用工具類,致力于
    的頭像 發表于 06-30 17:30 ?650次閱讀

    harmony-utils之DES,DES加解密

    harmony-utils之DES,DES加解密 harmony-utils 簡介與說明 [harmony-utils]款功能豐富且極易上手的HarmonyOS工具庫,借助眾多實用工具類,致力于
    的頭像 發表于 06-30 17:16 ?510次閱讀

    harmony-utils之RSA,RSA加解密

    harmony-utils之RSA,RSA加解密 harmony-utils 簡介與說明 [harmony-utils] 款功能豐富且極易上手的HarmonyOS工具庫,借助眾多實用工具類,致力于
    的頭像 發表于 06-30 16:52 ?977次閱讀

    harmony-utils之SM2,SM2加解密

    harmony-utils之SM2,SM2加解密 harmony-utils 簡介與說明 [harmony-utils] 款功能豐富且極易上手的HarmonyOS工具庫,借助眾多實用工具類,致力于
    的頭像 發表于 06-30 16:47 ?758次閱讀

    harmony-utils之SM4,SM4加解密

    harmony-utils之SM4,SM4加解密 harmony-utils 簡介與說明 harmony-utils 款功能豐富且極易上手的HarmonyOS工具庫,借助眾多實用工具類,致力于助力
    的頭像 發表于 06-28 18:36 ?743次閱讀

    全球首個Micro-LED陣列國際標準立項

    近日,維信諾參股子公司辰顯光電在國際電工委員會(IEC)牽頭制定的國際標準提案《半導體器件 第5-17部分:光電子器件 發光二極管 微型發光二極管陣列器件光電參數測試方法》通過了新工作項目提案(NP
    的頭像 發表于 06-07 14:35 ?1314次閱讀

    半導體攜國產EtherCAT芯片及系列方案聚力2025廈門工博會,引領行業芯生態

    5月9-12日,2025廈門工博會在廈門國際博覽中心隆重舉行,匯聚了眾多國內外業界知名企業。國內領先的工控芯片提供商半導體攜最新EtherCAT
    的頭像 發表于 05-13 17:13 ?1088次閱讀
    <b class='flag-5'>碼</b><b class='flag-5'>靈</b><b class='flag-5'>半導體</b>攜國產EtherCAT芯片及<b class='flag-5'>系列</b>方案聚力2025廈門工博會,引領行業芯生態

    洛微科技核心產品UL 61010國際安全標準認證

    近期,洛微科技D系列ToF相機成功通過UL61010國際安全標準認證。這認證標志著洛微科技在產品
    的頭像 發表于 04-27 10:58 ?883次閱讀
    洛微科技核心<b class='flag-5'>產品</b>獲<b class='flag-5'>UL</b> 61010<b class='flag-5'>國際</b>安全<b class='flag-5'>標準</b>認證