CRC32の合計とCRC32Cが特に0に戻るかどうか疑問に思っていますか?十分な大きさのデータセットがあれば、簡単な答えは「はい」です。ただし、CRC32C標準には、これを明示的に防止するプロビジョニングがあるかどうか疑問に思いました。
これの使用例は、リモートファイルが空であるかどうかをチェックできる必要があり、CRC32Cチェックサムだけがあることです。つまり、CRC32Cが0の場合、ファイルは空であることが保証されていると推測できます。
可能であれば、これが定義されている規格への参照を提供してください。
ゼロは、CRC32チェックサムの他の値と同じくらい可能性があります。 CRCは基本的に、入力全体(1つの大きな2進数と見なされます)を事前に選択された値で除算する余りです。入力がたまたまその値で割り切れる場合、余り、つまりCRCはゼロです。
@Yanekはほぼ完全に正しいです。
楽しみのために、CRC-32Cをゼロにする5文字のシーケンスを次に示します。DYB|O
。これは、ゼロを与える16進数の4バイトのシーケンスです。ab 9b e0 9b
。実際、それが可能な唯一の4バイトシーケンスです。ゼロになる3バイト以下のシーケンスはありません。これは、@ Yanekが正確に正しくない場合です。つまり、3バイト以下のシーケンスの場合、ゼロの可能性はそれほど高くありません。これらの場合、ゼロになる確率はゼロです。
ただし、32ビットCRCではなく、これはどうでしょうか。
1011 | 110011001010.000
1011
----
1111
1011
----
1001
1011
----
1000
1011
----
1110
1011
----
1011
1011
----
0000 (...)
1011
----
1011
1011
----
0000
または:
1100 | 11001010.000
1100
----
1010
1100
----
1100
1100
----
(...) 0