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 类型的人,谷歌返回了很多噪音。如果重要的话,我正在 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 回答