这有什么问题吗?
for (Object obj : java.security.Security.getAlgorithms("Cipher")) {
System.out.println(obj);
}
javax.crypto.SecretKeyFactory.getInstance("AES");
这是输出(Mac OS 10.6 上的 JDK 1.6):
BLOWFISH
ARCFOUR
PBEWITHMD5ANDDES
RC2
RSA
PBEWITHMD5ANDTRIPLEDES
PBEWITHSHA1ANDDESEDE
DESEDE
AESWRAP
AES
DES
DESEDEWRAP
PBEWITHSHA1ANDRC2_40
java.security.NoSuchAlgorithmException: AES SecretKeyFactory not available
at javax.crypto.SecretKeyFactory.<init>(DashoA13*..)
at javax.crypto.SecretKeyFactory.getInstance(DashoA13*..)
...
原文由 yegor256 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个经过验证的 java 错误。请参阅 https://bugs.openjdk.java.net/browse/JDK-7022467
编辑:不同的 java 版本支持不同的算法,您还可以使用自定义提供程序等扩展它。 Oracle 在 http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html 有一个 java 6 列表。对于 KeyFactory,这是 DSA。