2 つの CRC 実装が同じチェックサムを生成することを確認するにはどうすればよいですか?
CRC に固有の方法論を評価する徹底的な実装を探しています。
2 つの CRC 実装が同じチェックサムを生成することを確認するにはどうすればよいですか?
CRC に固有の方法論を評価する徹底的な実装を探しています。
問題をエッジ ケースとランダム サンプルに分けることができます。
エッジケース。CRC 入力、バイト数、および各バイトの値には 2 つの変数があります。したがって、0、1、および MAX_BYTES の配列を作成し、値の範囲は 0 から MAX_BYTE_VALUE です。エッジ ケース スイートは、JUnit スイート内に保持する可能性が最も高いものになります。
ランダムサンプル。上記の範囲を使用して、ループ内でランダムに生成されたバイト配列に対して CRC を実行します。ループを長く実行すると、入力が使い果たされます。コンピューティング能力が不足している場合は、テストを EC2 にデプロイすることを検討してください。
両方の実装の出力を相互に比較する、同じ入力でいくつかの単体テストを作成します。
まず、標準の CRC 実装であれば、ネット上のどこかで既知の値を見つけることができるはずです。
次に、いくつかのペイロードを生成し、ペイロードに対して各 CRC を実行して、CRC 値が一致することを確認できます。
同じ入力を受け取り、期待される出力に対して検証するそれぞれの単体テストを作成します。