繁体   English   中英

将以HEX格式格式化的unsigned int转换为字符串

[英]Convert unsigned int formatted in HEX to string

我正在为考试开发hmac-sha1课程。 https://en.wikipedia.org/wiki/Hash-based_message_authentication_code中所述,我必须两次应用sha-1时遇到问题。

当我将sha1应用于字符串时,它会向我返回一个无符号的int [5],并计算出哈希值。 我想将unsigned int [5]转换为带有哈希的char [40]。

例如

unsigned int H[5] = { 67452301, EFCDAB89, 98BADCFE, 10325476, C3D2E1F0 };

// char [40] will be "67452301EFCDAB8998BADCFE10325476C3D2E1F0"

因此,我可以将其串联到ipad,然后计算其哈希值ipad_hash,最后计算出将两个字符串串联的opad + ipad_hash。

这样对吗?

我正在使用arduino uno,因此“ unsigned int”是“ unsigned long”。

这是我的测试代码(很乱,但是我会清理它): http : //pastebin.com/jfwBxAp1

你可以做

char hash_cstr[41];
sprintf(hash_cstr, "%08lX%08lX%08lX%08lX%08lX", H[0], H[1], H[2], H[3], H[4])

确保分配至少41个字符(40个字符用于代码,1个字符用于NULL终止符)。

在格式字符串%08X中,08表示使用0填充到8个字符,因此您将获得中间字节的前导0,而X表示使用大写字母的十六进制格式。 您可以将小写x用作小写字符。 十六进制格式自动采用无符号。 您可以将lX用于64位类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM