[STM32H5] 【STM32 Nucleo-64测评】HASH校验测试

[复制链接]
 楼主| aple0807 发表于 2024-8-15 21:48 | 显示全部楼层 |阅读模式
<
HASH校验测试

H533的数据安全外设很是丰富,今天测试一下HASH校验外设的性能。

校验模式配置为SHA-256,为测试硬件性能,同时使用mbedtls的sha-256校验算法做对比。

测试代码如下:

cubemx生成初始化程序,数据格式选择  HASH_BYTE_SWAP,校验方式为 HASH_ALGOSELECTION_SHA256

  1. /**
  2.   * [url=home.php?mod=space&uid=247401]@brief[/url] HASH Initialization Function
  3.   * @param None
  4.   * @retval None
  5.   */
  6. static void MX_HASH_Init(void)
  7. {

  8.   /* USER CODE BEGIN HASH_Init 0 */

  9.   /* USER CODE END HASH_Init 0 */

  10.   /* USER CODE BEGIN HASH_Init 1 */

  11.   /* USER CODE END HASH_Init 1 */
  12.   hhash.Instance = HASH;
  13.   hhash.Init.DataType = HASH_BYTE_SWAP;
  14.   hhash.Init.Algorithm = HASH_ALGOSELECTION_SHA256;
  15.   if (HAL_HASH_Init(&hhash) != HAL_OK)
  16.   {
  17.     Error_Handler();
  18.   }
  19.   /* USER CODE BEGIN HASH_Init 2 */

  20.   /* USER CODE END HASH_Init 2 */

  21. }
测试代码:

  1. /*******************************************************************************
  2. * @brief  sha256_demo.
  3. * \param[in] none
  4. * \retval: none
  5. *******************************************************************************/
  6. int sha256_demo(int argc, char * argv[])
  7. {
  8.         uu08 * src , *out;
  9.         uu32 clk_start;
  10.         mbedtls_sha256_context *sha256;
  11.        
  12.         dbg_print("\nmbed SHA256 test :\n");
  13.        
  14.         // 请求内存
  15.         src = malloc(nKB(8));
  16.         out = calloc(1, 32);
  17.         sha256 = malloc(sizeof(mbedtls_sha256_context));
  18.        
  19.         // 开始
  20.         loop(nKB(8))
  21.                 src[index] = index;
  22.        
  23.         // 输入数据流,长度任意
  24.         clk_start = bsp_cpu_clks_get();
  25.         mbedtls_sha256_init(sha256);
  26.         mbedtls_sha256_starts(sha256, 0); // \c 0 for SHA-256, or \c 1 for SHA-224       
  27.         mbedtls_sha256_update(sha256, src, nKB(8));
  28.         mbedtls_sha256_finish(sha256, out);
  29.         mbedtls_sha256_free(sha256);
  30.         dbg_print("MBEDTLS sha256 time: %d us\n", bsp_clks_to_us(bsp_cpu_clks_get() - clk_start));
  31.        
  32.         // 显示
  33.         dbg_u8_print("out : \n", out, 32, 16);

  34.         memset(out, 0, 32);
  35.                 loop(nKB(8))
  36.                 src[index] = index;
  37.         clk_start = bsp_cpu_clks_get();
  38.        
  39.         HAL_HASH_Start(&hhash, src, nKB(8),out,100000);
  40.         dbg_print("\nSTM32 sha256 time: %d us\n", bsp_clks_to_us(bsp_cpu_clks_get() - clk_start));
  41.         dbg_u8_print("out : \n", out, 32, 16);
  42.        
  43.         // 释放内存
  44.         free(src);
  45.         free(out);
  46.         free(sha256);
  47.        
  48.         return 0;
  49. }
串口输入 sha256_demo 执行测试程序,测试内容为对分别使用mebedtls-sha256和stm32硬件对8KB数据计算校验码,输出校验结果和计算时间。

测试结果如下:
HASH.png
mbedtls 校验3260us,STM32硬件加密解密耗时153us,速度竟然有20倍之多。

下面附上测试工程
SOFTWARE.rar (8.76 MB, 下载次数: 2)

tpgf 发表于 2024-9-2 17:30 | 显示全部楼层
理论上,不同的数据可能会产生相同的哈希值,这种现象称为“碰撞”。对于MD5算法,已经存在有效的碰撞攻击方法,因此其安全性较低
木木guainv 发表于 2024-9-14 19:40 | 显示全部楼层
SHA系列包括SHA-1、SHA-256、SHA-384和SHA-512等,分别生成不同长度的哈希值
xiaoqizi 发表于 2024-9-15 21:32 | 显示全部楼层
MD5一种广泛使用的加密哈希函数,可以生成一个128位的哈希值
晓伍 发表于 2024-9-17 08:32 | 显示全部楼层
通过命令行或Powershell调用CertUtil,可以计算文件的MD2、MD4、MD5、SHA1、SHA256、SHA384和SHA512值。该工具适合高级用户和开发者使用
磨砂 发表于 2024-9-22 21:32 | 显示全部楼层
在数据库中,哈希算法用于优化数据的存储和检索速度,通过哈希表实现快速的键值对查找
wowu 发表于 2024-9-23 23:25 | 显示全部楼层
Hash校验是一种通过特定的算法对数据或文件进行运算,生成一个固定长度的字符串,这个字符串通常被称为哈希值或者hash码
v26g7l 发表于 2024-12-31 19:22 | 显示全部楼层
可以通过对比硬件HASH外设与软件实现来测试其性能。
OKAKAKO 发表于 2024-12-31 22:11 | 显示全部楼层
HASH校验外设的性能非常不错
地瓜patch 发表于 2024-12-31 22:55 来自手机 | 显示全部楼层
wowu 发表于 2024-9-23 23:25
Hash校验是一种通过特定的算法对数据或文件进行运算,生成一个固定长度的字符串,这个字符串通常被称为哈希 ...

与md5类似
地瓜patch 发表于 2024-12-31 22:57 来自手机 | 显示全部楼层
tpgf 发表于 2024-9-2 17:30
理论上,不同的数据可能会产生相同的哈希值,这种现象称为“碰撞”。对于MD5算法,已经存在有效的碰撞攻击 ...

是为了加密
LOVEEVER 发表于 2024-12-31 23:01 | 显示全部楼层
HASH校验非常关键
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

326

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

77

主题

326

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部