Как использовать класс java CRC32

Я пытаюсь использовать класс CRC32 из Java. Входными данными является массив байтов, который представляет собой пакет Ethernet (Eth + IP + полезная нагрузка). Однако результат контрольной суммы класса CRC32 отличается от того, который отображается в wirehark.

Может ли кто-нибудь сказать мне, совпадает ли расчет CRC класса CRC32 со стандартным расчетом контрольной суммы Ethernet II?


person Kintarō    schedule 26.11.2012    source источник
comment
Согласно Wikipedia, он должен быть таким же, но проверьте, влияет ли порядок байтов на результат.   -  person nhahtdh    schedule 26.11.2012


Ответы (1)


Да, это тот же CRC, а значит, должны быть те же 32 бита. Однако эти биты могут оказаться не там, где вы ожидаете. Попробуйте перевернуть байты, поменять местами биты и поменять местами оба, чтобы увидеть, совпадают ли вы.

person Mark Adler    schedule 26.11.2012
comment
Спасибо, оказывается, wirehark возвращает 0x30d9bc72, а java возвращает 72bcd930 (обратный порядок байтов). - person Kintarō; 26.11.2012