OpenJDK 1.6和SecureRandom / KeyGenerator(什么是可用的?)

时间:2011-10-16 08:00:38

标签: java cryptography key-generator

以下所有结果均为"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中有哪些生成器?根据{{​​3}},看起来SHA系列应该可用(至少对于SecureRandom而言)。

抱歉蹩脚的Java问题。我是一个Crypto ++和OpenSSL类型的人,谷歌正在回归很多噪音。如果重要的话,我在Eclipse工作。

杰夫

2 个答案:

答案 0 :(得分:2)

我认为这应该可以帮到你

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

检查一下。祝你好运!

答案 1 :(得分:1)

KeyGenerator有documentation。 SHA *是哈希,而不是加密算法。在KeyGenerator的上下文中使用SHA *几乎没有意义。

对于SecureRandom(顺便说一下,还有documentation)你最好不要指定算法,除非你有特定的要求而且你知道你在做什么(就像你知道你想要的提供者一样)使用)

我能想到的唯一连接是Sun JCE SecureRandom实际上使用了SHA1PRNG。