1

ウィキペディア ( http://en.wikipedia.org/wiki/Cyclic_redundancy_check )からこのステートメントを確認しようとしています:

実装では、多項式除算が発生する前にチェックするビットストリームにn個の 0 ビット ( nは CRC のサイズ) を追加することがあります。これには、チェック値が追加された元のビットストリームの剰余が正確にゼロになるという便利さがあるため、受信したビットストリームに対して多項式除算を実行し、剰余をゼロと比較するだけで CRC をチェックできます。

http://www.lammertbies.nl/comm/info/crc-calculation.htmlのオンライン CRC-32 計算機を使用しました

  1. 元のメッセージは「test」または 0x74657374 で、CRC-32 は 0xD87F7E0C です。
  2. 次に、4 つのゼロ バイトを追加して、メッセージが 0x7465737400000000、その CRC-32 が 0x15521A21 になるようにします。
  3. 次にゼロを手順 2 の CRC-32 に置き換えます。メッセージは 0x7465737415521A21 です。
  4. 0x7465737415521A21 の CRC32 は 0xE1E9ADD7 ですが、ここは 0 ではないでしょうか?

誰が何が悪かったのか教えてもらえますか?

4

1 に答える 1

3

実際、CRC-32 アルゴリズムには次の特性があります。

  1. 任意のファイル x があるとします。
  2. リトルエンディアンで y = crc32(x) とします。
  3. 次に、crc32(x アペンド y) = 0x2144DF1C です。
于 2011-07-13T00:47:44.770 に答える