我有一个20字节的unsigned char test_SHA1 [20],它是散列函数的返回值。使用以下代码,我得到此输出
unsigned char test_SHA1[20];
char hex_output[41];
for(int di = 0; di < 20; di++)
{
sprintf(hex_output + di*2, "%02x", test_SHA1[di]);
}
printf("SHA1 = %s\n", hex_output);
50b9e78177f37e3c747f67abcc8af36a44f218f5
这个数字的最后9位是0x0f5(十进制= 245),我可以通过采用mod_SHA1的mod 512得到。为了获得test_SHA1的mod 512,我做了
int x = (unsigned int)test_SHA1 % 512;
printf("x = %d\n", x);
但是x结果是158而不是245.
答案 0 :(得分:1)
我建议使用0x1ff而不是使用%
运算符。