将十六进制格式的无符号整数转换为字符串
Convert unsigned int formatted in HEX to string
我正在为考试开发 hmac-sha1 class。当我必须按照 https://en.wikipedia.org/wiki/Hash-based_message_authentication_code.
中的描述两次应用 sha-1 时,我遇到了问题
当我将 sha1 应用于一个字符串时,它 returns 我得到一个带有计算哈希值的无符号整数 [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 位类型。
我正在为考试开发 hmac-sha1 class。当我必须按照 https://en.wikipedia.org/wiki/Hash-based_message_authentication_code.
中的描述两次应用 sha-1 时,我遇到了问题当我将 sha1 应用于一个字符串时,它 returns 我得到一个带有计算哈希值的无符号整数 [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 位类型。