GOST R 34.11-94の多くの顔





私は何らかの方法でシステムのテストを準備しました。そのモジュールの1つは、とりわけ、ダウンロードしたファイルのハッシュ関数の値を計算しました。 必要なアルゴリズムは、作業ステートメント-GOST R 34.11-94でも指定されていました。 標準として、サードパーティのユーティリティRhashによって計算されたハッシュの値を使用しました



f86c9ecfb6e63726b35ebc79528d013d52b781e06e29d7eb0c9d1cb256efb7c1







関数が標準ライブラリによって計算されることを認識して、ファイルをモジュールにロードすることに対応して、良心をクリーンアップするリクエストを送信しました。 しかし、人間の運命には驚きがいっぱいです。 そして、あなたは次のようなものを見ているので、ただリラックスする必要があります:



964ba8755ca782ec3c5e0f98c93347f9b96d9f39cf5c7fdef43a23273fe8868a







誰が間違っている-モジュールまたはユーティリティの開発者?



どちらも判明しませんでした。



事実、GOST R 34.11-94はパラメーターの使用を意味します-いわゆる置換ノードと開始ハッシュベクトル。 ただし、特定の値を規制するものではありません。 それでも、GOSTの付録には、これらの値の例と推奨事項があります。

この標準のテストケースでのみ使用してください。



主題分野を研究した後、2つのRFCがあることが判明しました。 RFC 4357は 、CryptoProによって作成されたパラメーターを使用し、 RFC 5831はGOSTと同じ値を使用します。 デフォルトでは、RhashはRFC 5831に従ってハッシュを考慮します。CryptoProパラメーターの使用は明示的に指定する必要があります。



rhash --gost-cryptopro < >







問題は解決されたようです。 しかし、さらに面白くするために、標準ではハッシュ出力形式を定義していません。 そして、質問はバイト順です。







初心者には、データを表示する主な方法が2つあります。 上位バイトから下位バイト(ビッグエンディアン)、またはその逆(リトルエンディアン)。



例を考えてみましょう。 わかりやすくするために、バイトは強調表示されています。



ビッグエンディアンのバイトシーケンス:



rhash --gost-cryptopro --gost-reverse < >

8a86e83f27233af4de7f5ccf399f6db9f94733c9980f5e3cec82a75c75a84b 96








リトルエンディアン順:



rhash --gost-cryptopro < >

96 4ba8755ca782ec3c5e0f98c93347f9b96d9f39cf5c7fdef43a23273fe8868a








したがって、矛盾はありません-上記のすべての値、および



rhash --gost --gost-reverse < >

c1b7ef56b21c9d0cebd7296ee081b7523d018d5279bc5eb32637e6b6cf9e6cf8








GOST R 34.11-94に準拠します。



参照:

ウィキペディア

詳細説明



All Articles