мод неподписанного символа из безопасной хеш-функции - PullRequest
0 голосов
/ 07 апреля 2011

у меня есть unsigned char test_SHA1 [20] из 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 в десятичном виде), которые я получу, взяв мод 512 test_SHA1. Чтобы взять мод 512 test_SHA1, я делаю

int x = (unsigned int)test_SHA1 % 512;
printf("x = %d\n", x);

Но x оказывается 158 вместо 245.

1 Ответ

1 голос
/ 07 апреля 2011

Я предлагаю делать побитовое и с 0x1ff вместо использования оператора %.

...