Как рассчитать контрольную сумму CRC32-C с помощью zlib - PullRequest
0 голосов
/ 15 мая 2018

Я использую API-интерфейс z zlib, потому что он имеет функцию crc32_combine для объединения контрольных сумм, а функция Boost - нет.

Однако мне нужно реализовать контрольную сумму CRC32-C (Castagnoli) с полиномом 0x1EDC6F41 вместо стандартной контрольной суммы CRC32.

С Boost я могу использовать:

#include <boost/crc.hpp>

using crc_32c_type = boost::crc_optimal<32, 0x1EDC6F41, 0xFFFFFFFF, 0xFFFFFFFF, true, true>;
crc_32c_type result;
result.process_bytes(reinterpret_cast<const char*>(&buffer), len);
return result.checksum();

Который может использовать полином 0x1EDC6F41.

Есть ли для меня аналогичный способ сделать это с zlib?

1 Ответ

0 голосов
/ 16 мая 2018

zlib с открытым исходным кодом. Вы можете просто взять исходный код и изменить его для своих нужд. Вы можете изменить строку: odd[0] = 0xedb88320UL; на отражение полинома Кастаньоли.

...