当前位置: 首页 > 面试题库 >

bouncycastle提供程序找不到算法所需的类

郭乐湛
2023-03-14
问题内容

我正在尝试使用bouncycastle使用公共密钥来加密文件。我已经通过编程方式注册了提供程序:

Security.addProvider(new BouncyCastleProvider());

我成功创建了公共密钥对象

当我使用PGPEncryptedDataGenerator和密钥加密文件时,出现ClassNotFound异常。

似乎提供程序在运行时找不到此类,尽管我确定我有它的jar …

我在Tomcat上运行我的应用程序。使用Maven处理依赖关系-
我放入的充气城堡jars是bcpg,bcprov,bcmail,bctsp。我尝试同时使用1.4和1.6版本,但均未成功。我将maven插件中的“依赖层次结构”用于pom中的蚀和排除,以确保我的项目中没有多个版本的bouncycastle。

这是堆栈跟踪:

org.bouncycastle.openpgp.PGPException: exception encrypting session key
        at org.bouncycastle.openpgp.PGPEncryptedDataGenerator.open(Unknown Source)
        at org.bouncycastle.openpgp.PGPEncryptedDataGenerator.open(Unknown Source)
.....(web application stack trace and uninteresting stuff).....
Caused by: java.security.NoSuchAlgorithmException: No such algorithm: ElGamal/ECB/PKCS1Padding
        at javax.crypto.Cipher.getInstance(DashoA13*..)
        at org.bouncycastle.openpgp.PGPEncryptedDataGenerator$PubMethod.addSessionInfo(Unknown Source)
        ... 42 more
Caused by: java.security.NoSuchAlgorithmException: class configured for Cipher(provider: BC)cannot be found.
        at java.security.Provider$Service.getImplClass(Provider.java:1268)
        at java.security.Provider$Service.newInstance(Provider.java:1220)
        ... 44 more
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.JCEElGamalCipher$NoPadding
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
        at java.security.Provider$Service.getImplClass(Provider.java:1262)

问题答案:

您有BouncyCastle Security提供程序安装问题,您需要

  • 将BouncyCastle $JAVA_HOME/jre/lib/security/java.security作为提供程序添加到JRE / JDK 文件中(请确保将其添加到运行时使用的JRE中,例如,如果安装了多个JRE / JDK)

例如。

security.provider.2=org.bouncycastle.jce.provider.BouncyCastleProvider

(并对其下方的安全提供程序重新编号-不要将其设置为最高优先级的提供程序)。

  • 或者您可以按照上面的尝试以编程方式添加BouncyCastle,但是在这种情况下,安全策略$JAVA_HOME/jre/lib/security/java.policy应为“无限”(您可以从Java主页下载无限策略文件)。


 类似资料:
  • 问题内容: 我正在尝试将Entity Framework与MySQL配合使用,但出现上述错误。我安装了最新的MySQL连接器。 完整错误为: 但是,我找不到任何建议说明您如何在“ entityFramework”部分中进行注册的内容。 其他一些帖子(例如)建议将提供程序添加到该 部分中,如下所示: 但这不起作用,因为它声称名称是重复的。而且,如果我实际上遍历了,我可以看到最后一个是MySQL提供程

  • 你好Stackoverflow社区, 在尝试编译使用bouncycastle安全提供程序的maven项目时,我得到了以下错误:我知道必须对jar进行签名,因此我将此添加到pom.xml中以防止编译错误: 基于此(bouncycastle provider找不到算法所需的类),我添加了以下内容:,并且在公共静态void main中添加了具有以下内容的提供程序:。 不幸的是,这没有奏效。对于如何实现上

  • 因此,我试图在docker容器中配置selenium,以便与behat一起使用,当我到达http://localhost:4444/status时,集线器的状态为未就绪: 当我运行测试时: 你知道吗?谢谢。

  • 我有一个与问题“找不到具有固定名称”System.Data.SqlClient“的ADO.NET提供程序的实体框架提供程序”中提供的问题类似的问题,错误包含以下消息: “具有固定名称”System.Data.SqlClient“的ADO.NET提供程序未在计算机或应用程序配置文件中注册,或者无法加载。有关详细信息,请参阅内部异常。” 正如相关问题的答案所提示的,我已经通过包管理器控制台重新安装了实

  • 我试图捕捉图像使用相机意图并将其发送到服务器。 我遵循了官方https://developer.android.com/training/camera/photobasics 但是在使用FileProvider从filepath获取Uri时出现异常。 我有个例外 无法找到包含 /storage/emulated/0/Android/data/com.example.app/files/Pictur

  • 在nuget下载EF6并尝试运行我的项目后,它返回以下错误: 找不到具有固定名称“System.Data.SqlClient”得ADO.NET提供程序得实体框架提供程序.确保在应用程序配置文件的“Entity Framework”部分中注册了提供程序。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882。