OpenJDK 1.6 и SecureRandom / KeyGenerator (что доступно?) - PullRequest
2 голосов
/ 16 октября 2011

Все приведенные ниже результаты в "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? Согласно Стандартным именам алгоритмов , похоже, что семейство SHA должно быть доступно (по крайней мере для SecureRandom).

Извините за неубедительный вопрос Java. Я парень из Crypto ++ и OpenSSL, и Google возвращает много шума. Я работаю в Eclipse, если это имеет значение.

Jeff

Ответы [ 2 ]

2 голосов
/ 16 октября 2011

Я думаю, что это должно помочь вам

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

Проверьте это.Желаем удачи!

1 голос
/ 16 октября 2011

KeyGenerator имеет документацию .SHA * - это хэш, а не алгоритм шифрования.Использование SHA * в контексте KeyGenerator не имеет особого смысла.

Для SecureRandom (который, кстати, также имеет документация ), лучше не указывать алгоритм, если у вас нетконкретные требования, и вы знаете, что вы делаете (например, вы знаете поставщика, которого пытаетесь использовать)

Единственное соединение, которое я могу установить, это то, что Sun JCE SecureRandom фактически использует SHA1PRNG под ним.

...