我正在用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

09-13 00:05