【问题标题】:java.security.NoSuchProviderException: no such provider: BCjava.security.NoSuchProviderException:没有这样的提供者:BC
【发布时间】:2017-05-24 17:31:58
【问题描述】:

我正在使用 AdvancedInstaller 9.8 将我的 javacode (webapplication) 构建到安装程序。通常我的应用程序运行良好。使用 Advanced Installer 9.8 创建我的安装程序后,安装程序大小约为 55 MB。但是高级安装程序中有一个选项可以压缩为安装而制作的所有 jar。如果我压缩 jar,安装程序大小约为 16 MB。但是当我使用 Advanced Installer 9.8 进行压缩时,在执行 KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "BC"); 行时出现异常(如标题中所述);在我的代码中。 KeyPairGenerator 再次来自包 java.security.*;

谁能告诉我,这个问题的原因可能是什么。我知道使用 AdvancedInstaller 压缩时,Advanced Installer 压缩可能会出现问题。但我的问题是,在 java 方面通常会出现什么问题来解决这个问题。 (我的意思是可能是什么原因,比如任何文件都可能被损坏(或)等等任何其他原因)这样我就可以从那里开始工作了。

【问题讨论】:

标签: java bouncycastle


【解决方案1】:

在您的代码前添加这一行:

Security.addProvider(new BouncyCastleProvider());

【讨论】:

    【解决方案2】:

    您可以通过编辑 java.security 来添加安全提供程序,并使用以下代码创建静态块:

    static {
        Security.addProvider(new BouncyCastleProvider());
    }
    

    如果您使用的是 maven 项目,那么您必须在项目的 pom.xml 文件中添加 BouncyCastleProvider 的依赖项,如下所示。

    <dependency>
                <groupId>org.bouncycastle</groupId>
                <artifactId>bcprov-jdk15on</artifactId>
                <version>1.47</version>
    </dependency>
    

    如果您使用的是普通的 java 项目,那么您可以从下面给出的链接添加下载 bcprov-jdk15on-147.jar 并编辑您的类路径。

    http://www.java2s.com/Code/Jar/b/Downloadbcprovextjdk15on147jar.htm

    【讨论】:

      【解决方案3】:

      通过替换最新的 bcprov-jdk15-.jar 得到了修复。我以前的版本是 bcprov-jdk15-135.jar,它产生了上面提到的问题。

      【讨论】:

        【解决方案4】:

        除了检查 jre 配置,您还需要检查

        1.检查配置中是否设置了java home

        2.查看应用使用的java环境

        3.检查 \jre\lib\security\java.security 是否有 bouncycastle 提供程序条目。 即 security.provider.9=org.bouncycastle.jce.provider.BouncyCastleProvider

        4.同时检查 bouncy castle jar 是否已添加到 \jre\lib\ext\ bcprov-jdk15on-147.jar(适用于 java 1.5 和 1.6 的最新版本

        【讨论】:

          【解决方案5】:

          通过导入以下内容可以解决问题:

          import org.bouncycastle.jce.provider.BouncyCastleProvider;
          

          然后将下面的代码放入你的类方法中:

          Security.addProvider(new BouncyCastleProvider());
          

          【讨论】:

            猜你喜欢
            • 2011-04-12
            • 1970-01-01
            • 2016-08-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-04-20
            相关资源
            最近更新 更多