[英]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.