質問

8 ビット、16 ビット、32 ビットの CRC を見てきました。

どの時点でより広い CRC にジャンプする必要がありますか?

私の直感的な反応は、それはデータ長に基づいているということです。

  1. 1~100バイト:8ビットCRC
  2. 101~1000バイト:16ビットCRC
  3. 1001 - ???バイト:32ビットCRC

編集:CRC と Lott の答えに関する Wikipedia ページを見ると、次のことがわかります。

64 バイト未満:8ビットCRC

16K バイト未満:16ビットCRC

<512M バイト:32ビットCRC

役に立ちましたか?

解決

これは、研究テーマではありません。これは本当によく理解しています: http://en.wikipedia.org/wiki/Cyclic_redundancy_checkする

数学は非常に単純です。 8ビットのCRCは、256個の値の1までのすべてのメッセージを沸騰しました。あなたのメッセージは、より少数のバイト長を超える場合、同じハッシュ値を持つ複数のメッセージの可能性がますます高く上がります。

は、16ビットのCRCは、同様に、あなたに65,536利用できるハッシュ値のいずれかを示します。これらの値の1つを有する任意の二つのメッセージのオッズは何ですか?

32ビットのCRCは40億の可能なハッシュ値についてのあなたを与えるます。

Wikipediaの記事:「最大の総ブロック長は2**r − 1に等しいです」。それはビットであります。あなたは2**9 - 1が511ビットであることを確認するために多くの研究を行う必要はありません。 64バイトよりも長いCRC-8、複数のメッセージを使用すると、同じCRCチェックサム値を持つことになります。

他のヒント

CRC の有効性は複数の要因に依存します。CRC のサイズを選択するだけでなく、使用する生成多項式も選択する必要があります。以下に応じて、複雑で直感的ではないトレードオフが存在します。

  • チャネルの予想されるビット誤り率。
  • エラーがバースト的に発生する傾向があるか、または分散する傾向があるか (バーストが一般的)
  • 保護されるデータの長さ - 最大長、最小長、および分散。

2004 年ディペンダブル システムおよびネットワークに関する国際会議の議事録に掲載された、Philip Koopman と Tridib Chakravarty による論文「Cyclic Redundancy Code Polynominal Selection For Embedded Networks」は、非常に優れた概要を示し、いくつかの推奨事項を示しています。理解を深めるための参考文献も提供します。

http://www.ece.cmu.edu/~koopman/roses/dsn04/koopman04_crc_poly_embedded.pdf

は、ファイルサイズに対するCRCの長さの選択は、1つの可能性が高い大規模異なるものを持っているよりも、3つの以下のビットによって「正しい」入力からの異なる入力を有することである場合には、主に関連しています。大規模異なる2つの入力が与えられると、誤マッチングの可能性は、(CRCを含む)、8ビットのチェック値のほとんどの形態と1/256、(CRCを含む)16ビットのチェック値のほとんどの形態と1/65536の周りであろうなどCRCの利点は、非常に類似している入力のその治療から来ています。

は、多項式の長さ128の2つの周期を生成する8ビットのCRCと、シングル、ダブル、または検出されないよりも短いパケットで三重ビット誤りの割合は256分の1ではありません - それはなりゼロ。同様に期間32768の16ビットのCRCと、32768ビット以下のパケットを使用します。

パケットがCRCの期間よりも長い場合には誤りビットとの間の距離がCRC周期の倍数である場合は、

、しかし、次にダブルビットエラーが検出されないであろう。その威力はないひどく可能性の高いシナリオのように見えますが、CRC8は、「パケットが完全にスクランブルされた」エラーをキャッチでより長いパケット内のダブルビットエラーをキャッチで多少悪くなります。ダブル・ビット・エラーが(シングルビットエラーの後)は、第2の最も一般的な故障モードであれば、それは悪いだろう。いくつかのデータが破損何かが、おそらくそれの壊れAロットにある場合は、しかし、ダブル・ビット・エラーとのCRCの劣った行動は、非問題になる可能性があります。

私はCRCのサイズは、より多くのあなたが入力されたデータのサイズののではなく、必要にどのようにユニークなCRCのに関係していると思います。これは、あなたがCRCを計算していた項目の特定の使用及び数に関連します。

CRC は、CRC のサイズだけの問題ではなく、メッセージの長さに合わせて選択する必要があります。 http://www.ece.cmu.edu/~koopman/roses/dsn04/koopman04_crc_poly_embedded.pdf

ここでCRC-Nの素敵な「現実世界」の評価です http://www.backplane.com/matt/crc64.htmlする

私は、CRC-32とファイルサイズの比較を使用すると、ファイルの数十億にマッチングCRC-32およびファイル・サイズの衝突に、実行を確認したことがありません。わざわざ存在することを強制しない場合はしかし、私は、いくつかが存在を知っています。 (ハッキングトリック/悪用)

比較を行うとき、

は、あなたはまた、「データサイズ」をチェックする必要があります。あなたはめったに正しいサイズの範囲、マッチングCRCと、同じデータサイズの衝突を持っていません。

故意操作されたデータは、偽の試合に、通常、CRCが目標に一致するまで、余分なデータを追加することによって行われます。しかし、データ・サイズがその結果無もはや一致していること。ランダム、またはシーケンシャルデータを介してブルートフォース、またはサイクルしようと、同じ正確なサイズで、実際の狭い衝突速度を残すであろう。

あなたはまた、単にビットを使用しての一般的な使用式の制限、制約によって、データ・サイズ内の衝突を持つことができます/バイトと切り捨てとクリップされます浮動小数点値に依存ベース-10システム、ます。

あなたは「オリジナル」と「確認」することができない多くの衝突を見始めるとき、

あなたは大きな行くことについて考えるようにしたいと思うポイントは、あります。 (これらは同じデータサイズを持って、そして後方に試験した場合(それらが)一致CRC。リバース/バイトまたは逆/ビット、又はビットオフセットを有する

の両方の場合

いずれにせよ、それがインデックス化のために、ちょうど比較の迅速な形のために、比較のONLY形として使用するべきではありません。

あなたはN-catagoriesの一つにインデックス全体のインターネット、および除算すべてにCRC-8を使用することができます。あなたはそれらの衝突をしたいです。さて、事前ソートされたものと、あなただけの「ファイルサイズ」を探して、N-ディレクトリのいずれかをチェックし、または「逆CRC」、またはあなたが速く、その小さなデータセットに行うことができ、他のどんな比較する必要があります。 ..

データの同じブロブにCRC-32前後を行う

は単に一方向にCRC-64を使用するよりも信頼性が高いです。 (またはそのことについてMD5、。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top