【发布时间】:2012-07-17 19:42:50
【问题描述】:
我一直在关注显示如何使用 Windows CryptoAPI 对数据进行哈希处理的 msdn 示例。该示例可以在这里找到:http://msdn.microsoft.com/en-us/library/windows/desktop/aa382380%28v=vs.85%29.aspx
我已修改代码以使用 SHA1 算法。
我不明白以十六进制显示哈希(如下所示)的代码是如何工作的,更具体地说,我不明白 >> 4 运算符和 & 0xf 运算符的作用。
if (CryptGetHashParam(hHash, HP_HASHVAL, rgbHash, &cbHash, 0)){
printf("MD5 hash of file %s is: ", filename);
for (DWORD i = 0; i < cbHash; i++)
{
printf("%c%c", rgbDigits[rgbHash[i] >> 4],
rgbDigits[rgbHash[i] & 0xf]);
}
printf("\n");
}
如果有人能为我解释一下,我将不胜感激,在此先感谢:)
【问题讨论】:
-
它们分别被称为按位右移运算符和按位与运算符。您可以查看他们的工作,因为这是基本的位操作,应该可以回答您的问题。
标签: c++ windows sha1 cryptoapi