
Потребовалось определить алгоритм нахождения контрольной суммы, имея массивы насниференных байт данных и контрольные суммы к ним. Изначально были перепробованы все наиболее известные алгоритмы CRC, и уже после этого, почти отчаявшись, была написана программа (скорее, переписана), которая нашла решение за несколько секунд. С этого и надо было начинать!
Исходный код был переведен из JavaScript вот отсюда (CRC Calculator (Javascript)), спасибо тебе, Bastian Molkenthin.
Использовались параметры:
- Width of CRC (8, 16 or 32 bit) – количество битов CRC, или степень многочлена
- Polynomial – порождающий полином
- Initial CRC value – стартовое значение регистра
- Final XOR value – число, с которым складывается по модулю 2 полученный результат
- Input reflected – флаг, определяющий, инвертируется ли порядок битов регистра при входе на элемент XOR
- Result reflected – флаг переворота битов регистра при входе на элемент XOR
Алгоритм работы программы:
1) имеем несколько массивов байт и контрольные суммы к ним
2) перебираем варианты возможных значений шести параметров нахождения контрольной суммы
3) проверяем каждый вариант (2), подсовывая несколько массивов байт (1) и сверяя полученную контрольную сумму с имеющейся
4) если на одном из вариантов (2) у всех массивов байт значения контрольных сумм совпали с исходными, значит подобраны подходящие параметры. BINGO!!!
Проект: Ссылка
Как с вами можно связаться ?