Как я понял из описания протокола ОВЕН, при генерации CRC и HASH используется РСЛОС с характеристическим многочленом определенного вида. То есть принципы формирования HASH и CRC одни и те же. Странно, но допустим. Хорошо. Также в описании вышеупомянутого протокола приведено описание функции на С++, позволяющая рассчитать значения HASH и CRC:
__________________________________________________ _____________

unsigned Hash(char Byte, char nbit, unsigned CRC)
{
for (int i = 0; i < nbit; i++, Byte <<= 1)
{
if ( ( Byte ^ (CRC>>8) ) & 0x80 )
{
CRC <<= 1; CRC ^= 0x8F57;
}
else CRC <<= 1;
}
return CRC;
}
__________________________________________________ _______________

HASH и CRC формируются побайтно, не совсем понятно, почему. Почему нельзя подавать сразу весь пакет на вход РСЛОС? Зачем формировать контрольные коды поблочно?