JCE 无法在 java swing 应用程序中验证提供程序 BC

2022-09-01 10:14:07

我正在Java中创建一个基于sway的应用程序,它使用一些加密技术。但是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*..)

那么问题出在哪里呢?


答案 1
  1. 编辑jre\lib\security\java.security
  2. security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
  3. 复制到bc*.jarjre\lib\ext

答案 2

为了扩展来自 GregS 的注释,必须先对所有 JCE 提供程序 JAR 进行签名,然后才能被 Java 运行时信任。

BouncyCastle尽职尽责地提供签名的JAR,这些JAR将毫无问题地工作。但是,如果从此 JAR 中提取类文件或重新编译源代码,它将删除签名并导致 Java 拒绝代码。

请参阅此相关的 SO 问题:如何对自定义 JCE 安全提供程序进行签名


推荐