这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » STM32硬件Hash-MD5计算

共4条 1/1 1 跳转至

STM32硬件Hash-MD5计算

助工
2025-04-19 11:35:16     打赏

1、简介

MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value) 用于确保信息传输完整一致。MD5作为一种常用的摘要算法,其具有以下几个重要的特点

输入任意长度信息,输出长度固定:MD5 可输入任意长度的信息,其输出均为128位(bit)固定长度的二进制数据。

运算速度快:MD5的运算均为32位 与、或、非、位移等位运算,因此其运算速率快,几乎不消耗CPU时间。

不可逆:根据MD5的的散列结果,无法计算出原始数据(查字典除外)。

碰撞性:原始数据与其MD5散列结果并非一一对应,存在多个原始数据的MD5结果相同的可能性。

以下使用STM32内置硬件Hash完成MD5计算,开发板为STM32U5-Nucleo

2、CubeMX设置

]X%$NY){NI[P7NLX{{}B$9T.png

创建待加密数据

/* USER CODE BEGIN PV */
#include "string.h"
#define INPUT_TAB_SIZE ((uint32_t) 4)
__ALIGN_BEGIN const uint8_t aInput[INPUT_TAB_SIZE] __ALIGN_END={0x54,0x68,0x65,0x20} ;//待加密数据

__ALIGN_BEGIN static uint8_t aMD5Digest[16] __ALIGN_END;//存储MD5加密结果,大小为16字节

__ALIGN_BEGIN static uint8_t aExpectMD5Digest[16] __ALIGN_END = {0xF3,0xF1,0x26,0xDA,0xE6,0x39,0x29,0x0B,0x17,0x96,0x1E,0x93,0xB3,0x57,0x14,0x3D};

/* USER CODE END PV */

调用STM32MD5库函数,执行MD5计算

  /* USER CODE BEGIN 2 */
//HAL_GPIO_WritePin(LED31_GPIO_Port, LED31_Pin,GPIO_PIN_SET);
  if (HAL_HASH_MD5_Start(&hhash, (uint8_t *)aInput, INPUT_TAB_SIZE, aMD5Digest, HAL_MAX_DELAY) != HAL_OK)
  {
    Error_Handler();
  }
	printf("cal data:\n");
	for(uint8_t i=0;i<INPUT_TAB_SIZE;i++){
		printf("%02x ",aInput[i]);
	}
	printf("\ncal result:\n");
	for(uint8_t i=0;i<sizeof(aMD5Digest);i++){
		printf("0x%02X,",aMD5Digest[i]);
	}
	printf("\n");
  if (memcmp(aMD5Digest, aExpectMD5Digest, sizeof(aExpectMD5Digest) / sizeof(aExpectMD5Digest[0])) == 0)
  {
    printf("Cal MD5 Correct!\n");
  }
  else
  {
    printf("Cal MD5 Wrong!\n");
  }
  /* USER CODE END 2 */

3、运行结果

O3J83K)IFYFY6@@6W@PWEI4.png





关键词: MD5计算    

专家
2025-04-19 17:42:57     打赏
2楼

感谢分享


专家
2025-04-19 17:43:54     打赏
3楼

感谢分享


专家
2025-04-19 17:45:44     打赏
4楼

感谢分享


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]