2017-05-28 16 views
0

2つの入力を受け取り、それらからハッシュ値を生成するCRC16ハッシュ関数を書きたいと思います。現在の実装では、1つの入力のみを計算します。2つの入力からハッシュ値を計算するCRC16ハッシュ関数

電流: CRC16(input_value)

が必要: CRC16(input_value1、input_value2)

一つの解決策は、別々に、各入力のハッシュ値を計算し、それらをXORすることができます。しかし、私はランダム性にどのような影響があるのか​​分かりません。排他的論理和は十分ですか、別のアプローチをとるべきですか? CRC機能の

+0

[巡回冗長検査アルゴリズム](HTTPS ://en.wikipedia.org/wiki/Cyclic_redundancy_check)は一連のビットを処理し、結果としてハッシュシグネチャを生成します。したがって、あなたの "input_value"は一連のビット(またはバイト)でなければなりません。 2つの入力を処理するには、それらを連結して1つのシーケンスに結合することができます。 2つのハッシュと 'XOR 'を1つに計算することは、実際的な目的のためにはうまくいくはずです。 –

+0

私はあなたがCRCの性質をこのように失うだろうと確信しています。とにかくそれを使うことができないなら、なぜあなたはCRCを計算しますか? CRCはハッシュ関数ではなく、非常に特殊な目的のための非常に特殊なハッシュ関数であることに注意してください。これはエラー訂正と検出コードです。特に、SHA-3のような暗号的に安全なハッシュ関数ではありません。実際には、プリ画像、長さの延長などを計算するのは設計上*簡単です。 –

答えて

0

Aより完全な説明は次のようになります。

new_crc_value = crc16(previous_crc_value, input_value) 

は次に、2つの入力値を処理するために、あなたは、単にそれらを順番に処理する:

new_crc_value = crc16(crc16(previous_crc_value, input_value1), input_value2) 
関連する問題