gpt4 book ai didi

c - 函数 HMAC_MD5 : Return succes but no value

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:59 29 4
gpt4 key购买 nike

我在尝试编写 HMAC_MD5 代码时遇到了一些问题。

我在 STM32F4 微处理器上用 C 语言工作。

这是我的(更新的)代码:

RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_HASH, ENABLE); static uint8_t 

static Challenge[16] = "ldopwhjtsnkiaq8f";
static uint8_t Key[16] = "abcdefghijklmnop";
static uint8_t* HMAC_Key;
static uint8_t* HMAC_Input;
static uint8_t HMAC_Response1[16];
static uint8_t HMAC_Response2[16];

int m = 0;

HMAC_Input = &Challenge[0];
HMAC_Key = &Key[0];

ErrorStatus Result = ERROR;
for(m=0;m<16;m++){
HMAC_Response1[m]=1;
HMAC_Response2[m]=2;
}

Result = HASH_MD5(HMAC_Input, 16, HMAC_Response1);
Result = HMAC_MD5(HMAC_Key, 16, HMAC_Input, 16, HMAC_Response2);

这是官方对 HMAC_MD5 函数的描述(https://github.com/espruino/Espruino/blob/master/targetlibs/stm32f4/lib/stm32f4xx_hash_md5.c):

/**
* @brief Compute the HMAC MD5 digest.
* @param Key: pointer to the Key used for HMAC.
* @param Keylen: length of the Key used for HMAC.
* @param Input: pointer to the Input buffer to be treated.
* @param Ilen: length of the Input buffer
* @param Output: the returned digest
* @retval An ErrorStatus enumeration value:
* - SUCCESS: digest computation done
* - ERROR: digest computation failed
*/

ErrorStatus HMAC_MD5(uint8_t *Key, uint32_t Keylen, uint8_t *Input,
uint32_t Ilen, uint8_t Output[16])

该函数返回值“SUCCESS”,但摘要“Output”仍然为空(全是“\0”)。

我没有从编译器 (Attolic TrueStudio) 收到任何警告,而且我无法更改 key 或挑战(串联)的值,因为服务器已经在旧系统上运行。

最佳答案

让我猜猜。您使用的是 STM32F405 或 STM32F407,对吗?这些部分缺少散列处理器,因此总是为摘要返回零。 ST 通过打开手册中关于哈希处理器的部分“本节适用于 STM32F415/417xx 和 STM32F43xxx 设备”来记录它,但快速谷歌搜索表明您不是第一个期望此类信息的人出现在更显眼的地方(数据表、系列比较文档、产品选择器等)。

是的,我完全同意缺少散列处理器的 MCU 不应报告使用所述散列处理器的操作成功,但这显然不是 ST 员工的做法。

无论如何。您需要升级到 SMT32F415(或 STM32F417)才能获得硬件加速哈希。如果这不是一个选项,那么,总有一个软件实现。

关于c - 函数 HMAC_MD5 : Return succes but no value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45955138/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com