2

MessageDigest クラスは、SHA-1 アルゴリズムを (他の多くのアルゴリズムの中でも) 実装します。SHA-1 アルゴリズムでは、異なる「シード」または初期ダイジェストを使用できます。SHA-1 疑似コードを参照

アルゴリズムは変数またはシードを初期化します。

Initialize variables:
h0 = 0x67452301
h1 = 0xEFCDAB89
h2 = 0x98BADCFE
h3 = 0x10325476
h4 = 0xC3D2E1F0

ただし、オンライン Java マニュアルで説明されているように、MessageDigest クラスには、これらの初期変数を設定するための API がありません。実際、初期変数の値は示されていません。

SHA-1 アルゴリズムの初期シードを設定するにはどうすればよいですか?

Java での SHA-1 の例、USING AN INITIAL SEEDはどこにありますか? (例が代替の初期シードを
使用しない限り、SHA-1 実装を探しています。)MessageDigest

4

3 に答える 3

1

MessageDigest ファミリーのハッシュ関数には、シードの代わりにソルトを使用することをお勧めします。ソルトは、たとえば、ソルト バイトを入力の先頭に追加することによって適用されます。

また、ハッシュの内部状態を変更するだけでなく、ソルトがダイジェスト ブロック サイズの倍数でない場合、入力のアラインメントを混乱させる可能性があるため、ソルトを先頭に追加することは、シード値を直接設定するよりも強力です。ハッシュ関数に入力されます。

于 2011-01-19T06:31:20.190 に答える
1

SHA-1 ダイジェストのどこにシードが必要だと思いますか? 通常、乱数のソースが必要な暗号化アルゴリズムでは、シードが「必要」です。しかし、SHA-1 では乱数をまったく使用しないため、設定するシードまたは初期ベクトルはありません。あなたが言及した変数は「ハード」(定数)であり、アルゴリズムの一部であり、h0-4の値を変更する必要はなく、使用する必要もありません。

于 2010-08-04T16:59:40.190 に答える
0

Java関数に初期シードを指定することはできません。

SHA-1アルゴリズムのC実装をコピーし、初期シード値を変更できるように変更しました。

于 2010-10-21T00:33:27.093 に答える