Это алгоритм CRC-32, реализованный в zlib. Пожалуйста, не создавайте свои собственные, когда вы можете использовать эту библиотеку вместо этого.
[РЕДАКТИРОВАТЬ]: Как использовать калькулятор CRC из zlib (пример на C, извлеченный из документов zlib).
#include <zlib.h>
uLong crc = crc32(0L, Z_NULL, 0);
while (read_buffer(buffer, length) != EOF) {
crc = crc32(crc, buffer, length);
}
if (crc != original_crc) error();
Если у вас есть блок данных, для которого вы хотите получить CRC, вам не нужен этот цикл while; вы просто получаете начальное значение (первое присвоение crc
выше), а затем вычисляете значение по имеющимся у вас данным (второе присвоение crc
).