[经验] 【STM32H5开发板】第九篇 硬件HASH工程测试

常见泽1   2023-6-2 23:39 楼主

 

 

单向散列算法单向散列算法,又称hash哈希函数,Hash函数(也称杂凑算法)就是把任意长的输入消息串变化成固定长的输出串的一种函数,该过程是不可逆的。Hash函数可用于数字签名、消息的完整性检测、消息起源的认证检测等。较为常用的方法包括MD算法和SHA算法。

 

STM32的哈希模块 Hash,支持的哈希算法有:SHA-1, SHA-224, SHA-256等

集成该哈希硬件加速模块的STM32系列

 

image-20230602233533-1.png  

 

SHA(Secure Hash Algorithm)安全散列算法SHA是一个密码散列函数家族,SHA算法主要分为SHA-1、SHA-2、SHA-3 三大类,

一般使用SHA-2算法,主要有SHA-256、SHA-512、SHA-224、SHA-384四种,对于嵌入式一般选择SHA256,将任意长度的输入压缩成256位,且哈希碰撞的概率近乎为0。

应用场景:数字签名、数字时间戳、数字证书。

SHA256一般嵌入式系统签名或者校验复杂版使用SHA256,也就是长度小于2^64字节的任意数据,经过哈希运算得到256比特的消息摘要。

 

 

具体HASH算法的原理太复杂了,我也看不下去了,直接看看怎么用吧

 

一通过CUBE生成HASH的基本工程

image-20230602233533-2.png  

 

image-20230602233533-3.png  

 

SHA可以选择很多类型,比如SHA1等

这里选择SHA256

其它配置都是选择之前工程的

 

二加密工具测试下 SHA256的结果

image-20230602233533-4.png  

 

三下面开始自己加自己的代码

 

加入定义

 

image-20230602233533-5.png  

添加测试代码


 

if (HAL_HASH_Start_IT(&hhash, (uint8_t*)aInput, strlen((char const*)aInput), aSHA256Digest) != HAL_OK)

  {

    Error_Handler();

  }

  while (HAL_HASH_GetState(&hhash) != HAL_HASH_STATE_READY);



 /* Compare computed digest with expected one */

  if(memcmp(aSHA256Digest, aExpectSHA256Digest, sizeof(aExpectSHA256Digest)/sizeof(aExpectSHA256Digest[0])) != 0)

  {

    Error_Handler();

  }

  else

  {

    HAL_GPIO_WritePin(GPIOF,GPIO_PIN_4,GPIO_PIN_SET);

  }

 

先计算再比较

 

查看现象,灯亮,工作正常。

 

 

 

 

回复评论 (1)

HASH算法的原理确实复杂看不懂,看楼主的应用还是明白多了

点赞  2023-6-3 10:40
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复