如何计算 CRC-CCITT (Kermit) 多项式
How to calculate CRC-CCITT (Kermit) polynomial
我对 CRC 有疑问。我的十六进制消息是:80 00 00 03,crc 是 f5 1f。我想,多项式是 0x1021 (crc-ccitt kermit)。如何找出正确的多项式是什么?我怎么知道,如果我需要它反转,如果初始值是 0xffff 或 0x0000 或其他什么?如何计算我正在搜索的多项式?我是否必须将 80 00 00 03 和 f5 f1 转换为 BIN,然后将两者分开?
我试着用 prog reveng 来鼓掌,但没有成功。也许是因为我没有所有参数 -.-
我找到了一个 php 函数
但这不会为我计算出正确的金额。也许它不是 php-function
中的 CRC-CCITT KERMIT
0x1ff5
确实是80 00 00 03
的CRC-CCITT(Kermit)。 (它显然以小端顺序存储在您的流中。)
您找到的 PHP 代码适用于 false "CRC-CCITT",您可以在 RevEng 目录 here 中找到它。
true CRC-CCITT (Kermit) 参数是 here in that catalog。这些位是反转的,因此您使用反转的多项式 0x8408
,并将这些位向下而不是向上移动。初始寄存器内容为零,没有最终的异或。
我对 CRC 有疑问。我的十六进制消息是:80 00 00 03,crc 是 f5 1f。我想,多项式是 0x1021 (crc-ccitt kermit)。如何找出正确的多项式是什么?我怎么知道,如果我需要它反转,如果初始值是 0xffff 或 0x0000 或其他什么?如何计算我正在搜索的多项式?我是否必须将 80 00 00 03 和 f5 f1 转换为 BIN,然后将两者分开? 我试着用 prog reveng 来鼓掌,但没有成功。也许是因为我没有所有参数 -.-
我找到了一个 php 函数
但这不会为我计算出正确的金额。也许它不是 php-function
中的 CRC-CCITT KERMIT0x1ff5
确实是80 00 00 03
的CRC-CCITT(Kermit)。 (它显然以小端顺序存储在您的流中。)
您找到的 PHP 代码适用于 false "CRC-CCITT",您可以在 RevEng 目录 here 中找到它。
true CRC-CCITT (Kermit) 参数是 here in that catalog。这些位是反转的,因此您使用反转的多项式 0x8408
,并将这些位向下而不是向上移动。初始寄存器内容为零,没有最终的异或。