我正在尝试在我的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
所以在这一点上,我不确定我还有什么可能错过的。
请帮忙,谢谢
答案 0 :(得分:1)
其实我的不好,我想我已经解决了自己的问题。我的问题也应该更加明确。我在Junit测试中运行它,并想知道它为什么失败。
显然,PowerMock已经模拟了所有的javax.crypto。*库,我不得不告诉PowerMock明确地忽略这些库,现在它正常工作:|