у меня есть 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.