java.security.NoSuchProviderException:没有这样的提供者:BC

时间:2013-01-25 06:22:52

标签: java bouncycastle

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

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

5 个答案:

答案 0 :(得分:25)

在代码前添加此行:

Security.addProvider(new BouncyCastleProvider());

答案 1 :(得分:3)

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

答案 2 :(得分:3)

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

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

2.检查用于应用程序的java环境

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

4.还要检查弹跳城堡jar是否已添加到\ jre \ lib \ ext \ bcprov-jdk15on-147.jar(最新版本适用于java 1.5& 1.6

答案 3 :(得分:3)

您可以通过使用以下代码编辑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

答案 4 :(得分:1)

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

import org.bouncycastle.jce.provider.BouncyCastleProvider;

然后将以下代码放在您的类方法中:

Security.addProvider(new BouncyCastleProvider());