KeyGenerator返回java.security.NoSuchAlgorithmException:BouncyCastle没有这样的算法

时间:2017-09-23 23:09:09

标签: java cryptography aes bouncycastle java-security

我正在尝试在我的Java项目中使用BouncyCastle来使用KeyGenerator生成一个AES密钥,方法如下:

KeyGenerator gen = KeyGenerator.getInstance("AES", BouncyCastleProvider.PROVIDER_NAME);

然而这一直在回归:

java.security.NoSuchAlgorithmException: no such algorithm: AES for provider BC

我确定我的java.security文件为:

security.provider.1=sun.security.provider.Sun
security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider
security.provider.3=sun.security.rsa.SunRsaSign
security.provider.4=sun.security.ec.SunEC
security.provider.5=com.sun.net.ssl.internal.ssl.Provider
security.provider.6=com.sun.crypto.provider.SunJCE
security.provider.7=sun.security.jgss.SunProvider
security.provider.8=com.sun.security.sasl.Provider
security.provider.9=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.10=sun.security.smartcardio.SunPCSC
security.provider.11=apple.security.AppleProvider

和bcprov-jdk15on-1.47.jar位于/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/jre/lib/ext

在我的代码中,我也使用了

Security.addProvider(new BouncyCastleProvider());

如果我在使用Security.getProviders()运行代码时尝试列出所有提供程序,我会看到:

SUN
BC
SunRsaSign
SunEC
SunJSSE
SunJCE
SunJGSS
SunSASL
XMLDSig
SunPCSC
Apple

所以在这一点上,我不确定我还有什么可能错过的。

请帮忙,谢谢

1 个答案:

答案 0 :(得分:1)

其实我的不好,我想我已经解决了自己的问题。我的问题也应该更加明确。我在Junit测试中运行它,并想知道它为什么失败。

显然,PowerMock已经模拟了所有的javax.crypto。*库,我不得不告诉PowerMock明确地忽略这些库,现在它正常工作:|