Я нашел эту реализацию CRC32 в Интернете, немного изменил ее, но я не могу заставить ее работать. Я инициализировать его и обновлять его каждый байт я получаю от входа, но хэш-я не то, что должно быть ...Реализация CRc32 C - не работает
typedef struct {
unsigned short xor;
} xor_context;
void crc32_init(crc32_context *context) {
context->crc = 0xFFFFFFFF;
}
void crc32_update(crc32_context *context, unsigned char byte) {
uint32_t crc, mask;
crc = context->crc;
crc = crc^byte;
for (int j = 7; j >= 0; j--) { // Do eight times.
mask = -(crc & 1);
crc = (crc >> 1)^(0xEDB88320 & mask);
}
context->crc = ~crc;
}
Это один оригинальна
unsigned int crc32b(unsigned char *message) {
int i, j;
unsigned int byte, crc, mask;
i = 0;
crc = 0xFFFFFFFF;
while (message[i] != 0) {
byte = message[i]; // Get next byte.
crc = crc^byte;
for (j = 7; j >= 0; j--) { // Do eight times.
mask = -(crc & 1);
crc = (crc >> 1)^(0xEDB88320 & mask);
}
i = i + 1;
}
return ~crc;
}
Изменить его Тогда? – Persixty
тоже не будет работать, я попробовал – kiro135
Вы уверены, что полином правильный? – fuz