-1

こんにちは、次のコード スニペットがあります。

SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG" , "SUN");
secureRandom.setSeed("seed");
keyGen.init(DEFAULT_KEY_LENGTH, secureRandom);
SecretKey secretKey = keyGen.generateKey();
byte[] encodedKey = secretKey.getEncoded();

「エンコードされたキー」は、プラットフォーム ウィンドウ、AIX、Linux で毎回同じ結果をもたらします。HP-Unix ですが、Solaris では異なる結果が得られます。Solaris では setSeed() が機能していないか、バイパスされているようです。

私を助けてください、私は過去2日間からこれについて頭を悩ませています。

ありがとうシヴァム

4

2 に答える 2

0

Javadoc onSecureRandom.setSeed(long)は次のように述べています。

指定されたシードは、既存のシードを置き換えるのではなく、補足します。

SecureRandomと同じようには機能しませんjava.util.RandomRandomアルゴリズムはすべての実装で標準化されていますが、SecureRandomアルゴリズムについては保証されていません。

また、

[...] SecureRandom オブジェクトに渡されるシード マテリアルは予測不能でなければなりません。

ここではそうではありません。シード マテリアルが予測不可能でない場合、結果の乱数も予測できない可能性が高いため、暗号的に安全な乱数ジェネレーターは使用できません。

于 2013-10-09T15:51:00.697 に答える