2

次のすべての結果は"java.security.NoSuchAlgorithmException: SHA not SecureRandom available"(または同様の) になります。

SecureRandom prng = SecureRandom.getInstance("SHA256");
SecureRandom prng = SecureRandom.getInstance("SHA-256");
SecureRandom prng = SecureRandom.getInstance("SHA1");
SecureRandom prng = SecureRandom.getInstance("SHA-1");
SecureRandom prng = SecureRandom.getInstance("SHA");

"java.security.NoSuchAlgorithmException: SHA KeyGenerator not available"次の ( )も同様です。

KeyGenerator kgen = KeyGenerator.getInstance("SHA256");
KeyGenerator kgen = KeyGenerator.getInstance("SHA-256");
KeyGenerator kgen = KeyGenerator.getInstance("SHA1");
KeyGenerator kgen = KeyGenerator.getInstance("SHA-1");
KeyGenerator kgen = KeyGenerator.getInstance("SHA");

OpenJDK で使用できるジェネレーターは何ですか? Standard Algorithm Namesによると、SHA ファミリーが利用可能であるように見えます (少なくとも SecureRandom では)。

つまらない Java の質問で申し訳ありません。私は Crypto++ と OpenSSL のような人で、Google は多くのノイズを返しています。問題があれば、Eclipseで作業しています。

ジェフ

4

2 に答える 2

2

これはあなたを助けるはずだと思います

http://www.java2s.com/Code/Java/Security/ListAllProviderAndItsAlgorithms.htm

チェックしてください。頑張ってください!

于 2011-10-16T09:00:18.020 に答える
1

KeyGenerator にはドキュメントがあります。SHA* はハッシュであり、暗号化アルゴリズムではありません。KeyGenerator のコンテキストで SHA* を使用しても意味がありません。

SecureRandom (ちなみに、ドキュメントもあります) の場合、特定の要件がなく、自分が何をしているのかを知っている (使用しようとしているプロバイダーを知っているなど) 場合を除き、アルゴリズムを指定しない方がよいでしょう。

私が思いつくことができる唯一の接続は、Sun JCE SecureRandom が実際にその下で SHA1PRNG を使用しているという事実です。

于 2011-10-16T10:23:00.127 に答える