|
Если на пальцах - можете считать, что каждый бит входной последовательности некоторой конкретной длины соответсвует вектору из 4 контрольных битов. Вклад от каждого единичного бита входной последовательности ксорится в результат. Дополнительно нужно проксорить с некоторым неизвестным постоянным 4-битным вектором, чтобы получить реальные контрольные разряды.
Только учтите, что при другой длине блока вклад каждого битика будет другой.
Чтобы проверить гипотезу линейного кода - можно записать достаточно много блоков одинаковой длины из входных данных дополненных контрольными битами в виде матрицы над GF(2) (строки - входные вектра дополненные контрольными разрядами) и стандартными методами линейной алгебры проверить, что строки линейно зависимы и ранг матрицы равен числу битов данных. Блоков должно быть больше, чем ожидаемый ранг матрицы :) Зная, что код линейный, можно для каждой длины блока данных найти базис ненулевого пространства матрицы, в котором в каждом базисном векторе ровно по 1 ненулевому биту входных данных, затем немного подумать - и найти все параметры CRC, если это действительно циклический код, а не линейный код общего вида.
E-mail: info@telesys.ru