色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

怎么知道RT-Thread的CRYPTO設備對M2354支持怎樣呢?

冬至子 ? 來源:楊桃樹 ? 作者:楊桃樹 ? 2023-07-27 15:21 ? 次閱讀

疑問

前面碰到了一個問題,RT-Thread 支持 MD5,可是 M2354 卻不支持,那怎么知道 RT-Thread 的 CRYPTO 設備對 M2354 支持怎樣呢?

我看了下文檔,沒找到,通過查看源碼,做了如下表格:

1.jpg

總的來說看就是 RT-thread 支持隨機數、哈希、對稱加密,

PS:該表格根據文件 rt-threadbspnuvotonlibrariesm2354rtt_portdrv_crypto.c 里面的 static rt_err_t nu_hwcrypto_create(struct rt_hwcrypto_ctx *ctx)) 函數得來

接下來首先使用下 HASH 算法

hash 算法

hash 算法是什么? 我在網上找到這個解釋:

哈希算法(Hash)又稱摘要算法(Digest),它的作用是:對任意一組輸入數據進行計算,得到一個固定長度的輸出摘要。
哈希算法最重要的特點就是:
相同的輸入一定得到相同的輸出;
不同的輸入大概率得到不同的輸出。

根據這個我的理解是,對于任何(任何長度)數據,不管什么時候計算,通過 hash 算法計算,都一定能得到相同的輸出。

常用的 hash 算法有:

1.jpg

目前,在 M2354 跑 RT-Thread 使用 CRYPTO 設備 的話,可以用到的 hash 算法有:

sha1 :使用該算法獲得的哈希值為 160 bit
sha2
SHA224:使用該算法獲得的哈希值為 224 bit
SHA256:使用該算法獲得的哈希值為 256 bit
SHA384:使用該算法獲得的哈希值為 384 bit
SHA512:使用該算法獲得的哈希值為 512 bit
CRYPTO 設備的 HASH 算法 API

RT-Thread 使用 CRYPTO 設備 對應的 hash 算法 API 有:

1.jpg

根據文檔,使用方法為:

使用 rt_hwcrypto_hash_create 創建 hash 上下文
使用 rt_hwcrypto_hash_update 對數據進行 hash 運算
使用 rt_hwcrypto_hash_finish 獲得運算結果
最后使用 rt_hwcrypto_hash_destroy 刪除上下文,釋放資源
通過前面運行文檔 CRYPTO 設備 給出的例程,我的實踐結果是如果按照該流程,在 NuMaker-M2354 上是無法正常運行的,需要在創建了上下文后調用函數 rt_hwcrypto_hash_reset 才能夠正常運行。

如何測試

該文檔中 CRYPTO 設備 給出的 hash 例程比較簡單,我有沒實際使用場景,該如何測試 hash 呢?

我看了下 M2354 官方給出的 BSP (M2354_Series_BSP_CMSIS_V3.00.002)有個 sha1 的例程(目錄:M2354_Series_BSP_CMSIS_V3.00.002SampleCodeStdDriverCRYPTO_SHA),這個例程里面有 64 組數據及對應的 hash 值,正好可以拿來測試,我把這個例程移植到 RT-Thread 中的 NuMaker-M2354 BSP 中,

移植好后,編譯運行:

1.jpg

程序一開始是跑下來了,計算出來的哈希值也是對的,可是運行到最后一組數據的時候,程序卡死了,通過調試發現也是卡死在 rt-threadbspnuvotonlibrariesm2354rtt_portdrv_crypto.c 里面的 SHABlockUpdate 函數,也是停在了該函數的最后一句 while (!s_SHA_done) {};,一直等待在完成。

通過單步調試查看寄存器,發了了卡住的原因,如下圖:

1.jpg

在執行開始計算的時候,CRYPTO_HMAC_DMACNT 寄存器為 0。

M2354 的參考手冊中,關于 Hash 的使用中有說道開始計算之前,需要先設置寄存器 CRYPTO_HMAC_DMACNT :

1.jpg

摘自:M2354 Series Technical Reference Manual

然后再單步調試、查看代碼,發現可疑點:

1.jpg

把上圖中的 >= 改為 > 后,程序可以跑完了:

1.jpg

M2354 Sha1 的性能怎樣

怎么測試 Hash 算法的性能呢? 我不知道,我也只是剛接觸 CRYPTO,不過,我想起了之前見過的一張 PPT:

1.jpg

這是某個 MCU 的 HASH 算法的統計數據,給出了 SHA2、SHA3 計算每 16KB 所需的時間,最下面 2 行是什么,還不知道,根據這個,做個簡化版的,畢竟 MCU 資源有限,我就做個計算 1K Byte 數據所需的時間。

做法是,根據 M2354 官方給出的 BSP (M2354_Series_BSP_CMSIS_V3.00.002)里面的 sha1 例程,我做 10 組 大小 1024 字節的數據,算出計算每組數據所需時間求和再除 10,統計出計算 1024 字節 HASH 所需的時間。

那這數據怎么來呢?

我用 python 做了個簡單的小程序,生成 10 組大小為 1024 字節的隨機數的數組,并計算 hash 值,保存到一個文件中,代碼很簡單,才 20 多行,如下:

import numpy as np
import hashlib
def create_item():
first = np.random.randint(20,high = 0xff, size=1024)
str = ""
for item in first:
str += hex(item).replace("0x","")
source = []
for by in first:
source.append(by)
bye = bytes(source)
n = hashlib.sha1()
n.update(bye)
return str,n.hexdigest()
dat = "[L = 20]nn"
for i in range(10):
msg,has = create_item()
dat += "Len = 8192nMsg = " + msg + "nMD = " + has + "nn"
print(has)
print(dat)
file = open("sha_test_vector","w")
file.write(dat)
file.close()

運行結果如下:

1.jpg

在 MCU 部分,我需要個可以統計計算 hash 所需時間的方法,一開始使用系統節拍(使用函數 rt_tick_get() 獲取系統節拍)來統計,發現計算出來的時間是 0,精度不夠,后來試了下 HWTIMER,可以出時間,應該是可以滿足需求的。

我分別做了 SHA1、SHA224、SHA256、SHA384、SHA512 的得出如下數據:

1.jpg

總結

RT-Thread 的 HASH 算法用起來還是挺簡單的,文檔也是很詳細。我在使用過程中碰到 2 個問題:

使用 HASH 算法的時候,在創建 HASH 上下文后需要調用函數 rt_hwcrypto_hash_reset 才能夠正常運行,可是這個跟文檔有出入,不知道是 M2364 的 BSP 的問題還是 文檔的問題

M2354 BSP 中的 rt-threadbspnuvotonlibrariesm2354rtt_portdrv_crypto.c里面的函數 nu_sha_hash_run 這句:
while ((psSHACtx->u32SHATempBufLen + u32DataLen) >= psSHACtx->u32BlockSize)

需要改為:

while ((psSHACtx->u32SHATempBufLen + u32DataLen) > psSHACtx->u32BlockSize)

這個是不是 bug ?

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

    關注

    31

    文章

    5336

    瀏覽量

    120230
  • python
    +關注

    關注

    56

    文章

    4792

    瀏覽量

    84627
  • Hash算法
    +關注

    關注

    0

    文章

    43

    瀏覽量

    7382
  • RT-Thread
    +關注

    關注

    31

    文章

    1285

    瀏覽量

    40085
  • MCU芯片
    +關注

    關注

    3

    文章

    250

    瀏覽量

    11437
收藏 人收藏

    評論

    相關推薦

    使用RT-ThreadCRYPTO設備資料推薦

    RT-ThreadCRYPTO 設備M2354 支持怎樣
    發表于 04-02 11:22

    NuMaker-M2354開發板之CRYPTO硬件密碼加速器測評

    RT-Thread 中的 hwcrypto 硬件加解密設備驅動框架,該框架主要由硬件加解密驅動抽象層以及各種加解密 API接口兩部分構成。對于上層應用,可對接安全套件或直接使用,使用方式十分靈活。對于驅動,需要對接的接口少,功能單一,驅動開發簡單快捷。目前沒有實現對非對稱
    發表于 10-20 14:19

    請問M2354芯片的Vsw是如何使用的?

    M2354芯片的Vsw是如何使用的?
    發表于 06-28 08:00

    2022 RT-Thread全球技術大會:螢石EZIOT SDK對RT-Thread支持

    2022 RT-Thread全球技術大會:RT-Thread在攝像頭及IoT設備上的實踐經驗分享
    的頭像 發表于 05-27 11:08 ?1310次閱讀
    2022 <b class='flag-5'>RT-Thread</b>全球技術大會:螢石EZIOT SDK對<b class='flag-5'>RT-Thread</b>的<b class='flag-5'>支持</b>

    RT-Thread 4.1.0正式添加對Arm Compiler 6支持

    RT-Thread 4.1.0 正式發布版中,添加了對 Arm Compiler 6 的支持,用戶可以修改 rtconfig.py 指定生成 mdk5 工程時使用的編譯器
    的頭像 發表于 06-01 15:20 ?2026次閱讀
    <b class='flag-5'>RT-Thread</b> 4.1.0正式添加對Arm Compiler 6<b class='flag-5'>支持</b>

    RT-Thread文檔_RT-Thread 簡介

    RT-Thread文檔_RT-Thread 簡介
    發表于 02-22 18:22 ?5次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> 簡介

    RT-Thread文檔_RT-Thread SMP 介紹與移植

    RT-Thread文檔_RT-Thread SMP 介紹與移植
    發表于 02-22 18:31 ?9次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>RT-Thread</b> SMP 介紹與移植

    RT-Thread文檔_UART 設備

    RT-Thread文檔_UART 設備
    發表于 02-22 18:32 ?2次下載
    <b class='flag-5'>RT-Thread</b>文檔_UART <b class='flag-5'>設備</b>

    RT-Thread文檔_PWM 設備

    RT-Thread文檔_PWM 設備
    發表于 02-22 18:35 ?1次下載
    <b class='flag-5'>RT-Thread</b>文檔_PWM <b class='flag-5'>設備</b>

    RT-Thread文檔_SPI 設備

    RT-Thread文檔_SPI 設備
    發表于 02-22 18:36 ?2次下載
    <b class='flag-5'>RT-Thread</b>文檔_SPI <b class='flag-5'>設備</b>

    RT-Thread文檔_CRYPTO 設備

    RT-Thread文檔_CRYPTO 設備
    發表于 02-22 18:38 ?0次下載
    <b class='flag-5'>RT-Thread</b>文檔_<b class='flag-5'>CRYPTO</b> <b class='flag-5'>設備</b>

    RT-Thread文檔_Pulse Encoder 設備

    RT-Thread文檔_Pulse Encoder 設備
    發表于 02-22 18:39 ?1次下載
    <b class='flag-5'>RT-Thread</b>文檔_Pulse Encoder <b class='flag-5'>設備</b>

    【NuMaker-M2354試用】microSD實驗

    ? 測試M2354的硬件RTC,開啟RTC功能,運用RT-Thread提供的bsp及庫函數,實現一個RTC功能。
    的頭像 發表于 08-02 17:18 ?913次閱讀
    【NuMaker-<b class='flag-5'>M2354</b>試用】microSD實驗

    M2354旁路攻擊防護作法與好處

    M2354旁路攻擊防護作法與好處
    的頭像 發表于 08-10 11:16 ?544次閱讀
    <b class='flag-5'>M2354</b>旁路攻擊防護作法與好處

    M2354錯誤注入攻擊(Fault Injection Attack)防護

    M2354錯誤注入攻擊(Fault Injection Attack)防護
    的頭像 發表于 08-10 11:12 ?688次閱讀
    <b class='flag-5'>M2354</b>錯誤注入攻擊(Fault Injection Attack)防護
    主站蜘蛛池模板: 狠狠色狠狠色综合| 含羞草影院AE在线观看| 国产色情短视频在线网站| 精品香蕉99久久久久网站| 男人把女人桶到高潮嗷嗷叫| 色久悠悠无码偷拍自怕| 亚洲日本激情| c了瑜伽老师嗷嗷叫一节课视频| 国产69精品久久久久人妻刘玥| 精品国产乱码久久久久久免费 | 伊人久久大香线蕉综合99| caoporen超碰在线视频| 国产亚洲高清视频| 欧美卡1卡2卡三卡2021精品| 亚洲qingse中文字幕久久| 99久久99久久久精品齐齐鬼色| 国产免费人成在线看视频| 免费毛片在线播放| 亚洲精品动漫免费二区| x69老师x日本| 久久精品国产欧美成人| 少妇仑乱A毛片| 78m成人亚洲| 国产亚洲精品线观看不卡| 亲胸揉胸膜下刺激视频在线观看| 亚洲精品午睡沙发系列| jizzjizz3d动漫| 久久亚洲精品中文字幕| 午夜想想爱午夜剧场| www精品一区二区三区四区| 久久99r66热这里只有精品| 熟妇少妇任你躁在线无码| 97超级碰久久久久香蕉人人| 果冻传媒完整免费网站在线观看| 青草在线观看视频| 最近中文字幕MV免费高清视频8| 国产乱人精品视频AV麻豆| 人妻天天爽夜夜爽三区麻豆A片| 中文亚洲大香伊蕉不卡一区| 国产婷婷综合在线视频中文| 日本国产黄色片|