Вывод вычисления CRC - PullRequest
1 голос
/ 29 апреля 2011

Является ли 0 возможной контрольной суммой для проверки циклическим избыточным кодом (CRC)?

Я использую повышение для вычисления CRC:

const unsigned int CrcPolynomial = 0x11021;
const unsigned short InitialValue = 0xffff;
boost::crc_optimal<16, CrcPolynomial, InitialValue, 0, true, true> Crc;
// process some bytes...
int x = Crc.checksum(); // <------ can this be 0?

1 Ответ

3 голосов
/ 29 апреля 2011

Да. Возьмите любое сообщение x и вычислите его CRC crc(x). Тогда crc(x . crc(x)) будет 0 (где . обозначает конкатенацию).

Фактически, это соотношение может использоваться для проверки правильности передачи сообщения + CRC (см., Например, вторую анимированную диаграмму на http://en.wikipedia.org/wiki/Computation_of_CRC).

...