来自安全散列函数的unsigned char的mod

时间:2011-04-07 18:42:04

标签: char bit-manipulation operator-keyword unsigned modulo

我有一个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.

1 个答案:

答案 0 :(得分:1)

我建议使用0x1ff而不是使用%运算符。