我正在用Java创建一个基于Swing的应用程序,它使用了一些加密技术。但
javax.crypto.KeyGenerator.getInstance(“AES”,“BC”)给出异常:
java.security.NoSuchProviderException: JCE cannot authenticate the provider BC
at javax.crypto.SunJCE_b.a(DashoA13*..)
at javax.crypto.KeyGenerator.getInstance(DashoA13*..)
那是什么问题呢?
最佳答案
为了扩展来自GregS的评论,必须先对所有JCE提供者JAR进行签名,然后它们才能被Java运行时所信任。
BouncyCaSTLe会忠实地提供已签名的JAR,这些JAR可以毫无问题地工作。但是,如果您从此JAR中提取类文件或重新编译源文件,它将删除签名并导致Java拒绝代码。
请参阅此相关的SO问题:How to sign a custom JCE security provider