什么"SecretKeyFactory不可用"的意思?

yeg*_*256 5 java security encryption

这有什么问题?

for (Object obj : java.security.Security.getAlgorithms("Cipher")) {
  System.out.println(obj);
}
javax.crypto.SecretKeyFactory.getInstance("AES");
Run Code Online (Sandbox Code Playgroud)

这是输出(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*..)
 ...
Run Code Online (Sandbox Code Playgroud)

jon*_*tro 5

这是一个经过验证的java bug.请参见http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7022467

编辑:不同的Java版本支持不同的算法,您也可以使用自定义提供程序扩展它等等.Oracle在这里有一个java 6的列表http://docs.oracle.com/javase/6/docs/technotes/guides/security/SunProviders.html.对于KeyFactory,这是DSA.