当前位置: 首页 > 知识库问答 >
问题:

将Bouncycastle安全提供程序添加到maven jar

朱炜
2023-03-14

你好Stackoverflow社区,

在尝试编译使用bouncycastle安全提供程序的maven项目时,我得到了以下错误:java.lang.SecurityException:JCE无法对提供程序BC进行身份验证我知道必须对jar进行签名,因此我将此添加到pom.xml中以防止编译错误:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.3</version>
        <configuration>
            <filters>
                <filter>
                    <artifact>*:*</artifact>
                    <excludes>
                        <exclude>META-INF/*.SF</exclude>
                        <exclude>META-INF/*.DSA</exclude>
                        <exclude>META-INF/*.RSA</exclude>
                    </excludes>
                </filter>
            </filters>
        </configuration>
        <executions>
            <execution>
                <phase>
                    package
                </phase>
                <goals>
                    <goal>shade</goal>
                </goals>
            </execution>
        </executions>
</plugin>

基于此(bouncycastle provider找不到算法所需的类),我添加了以下内容:Security.SetProperty(“java.policy”,“unlimited”);,并且在公共静态void main中添加了具有以下内容的提供程序:Security.AddProvider(new BouncyCastleProvider());

不幸的是,这没有奏效。对于如何实现上面链接的文章中所显示的东西,而不必为每个JRE单独实现它,您有什么建议吗?事先谢谢你的帮助。

共有1个答案

南宫泓
2023-03-14

我从以下问题中找到了一个可执行打包器maven插件(https://github.com/nthuemmel/executable-packer-maven-plugin)的解决方案:如何使用maven将所有必需的JAR文件放在最终JAR文件的库文件夹中?它

<plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>de.ntcomputer</groupId>
            <artifactId>executable-packer-maven-plugin</artifactId>
            <version>1.0.1</version>
            <configuration>
                <mainClass>mh.cryptomail.CryptoMail</mainClass>
            </configuration>
            <executions>
                <execution>
                    <goals>
                        <goal>pack-executable-jar</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>mh.cryptomail.CryptoMail</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>

它将所有jar不加修改地复制到结果jar,但在启动时需要更长的时间(大约15秒),因为它必须注册一个自定义的类加载器,但它可以工作。

 类似资料:
  • 在Java8中,我通过执行以下步骤全局注册了Bouncy Castle安全提供程序: null

  • 我有一个使用bouncycastle库的Java applet。当我在Eclipse上运行应用程序时,一切正常,但当我在带有标记的浏览器上使用applet时,当我添加安全BouncyCastleProvider时,它会引发异常。 我的stackTrace是: 我正在使用bcpkix-jdk15on-1.48.jar和bcprov-jdk15on-1.48.jar版本的BouncyCastle。为什

  • 但是,我在Github文档的任何地方都找不到关于要填充的endpoint和数据的适当概述。 以下字段为必填字段: 发行人->? 我到处都找不到Jwks uri。如有任何帮助,我们将不胜感激。

  • JCA提供者提出的解决方案是将JAR放在jre/lib/ext文件夹中,但不是从那里加载的。据我所知,这是由于OSGi(Eclipse equinox)类加载器策略将bootstrap类加载器作为每个bundle类加载器的父类,从而排除了从jre/lib/ext文件夹加载的扩展类加载器。即。在jre/lib/ext文件夹中没有一个bundle可以看到任何东西。 是否有一种方法可以让Eclipse

  • 我正在尝试做一件本来应该是微不足道的事情,但我却面临着一个问题。 在将JavaFx应用程序从Java8迁移到Java11(也尝试了Java12,结果相同)之后,bouncy castle安全提供程序不会加载。这是一个Maven项目,我对其进行了更新,以使用符合Java11的插件。它编译得很好,但运行时,我在终端窗口中得到了以下信息: jar.launcher java.lang.reflect.I

  • 问题内容: 我正在尝试使用bouncycastle使用公共密钥来加密文件。我已经通过编程方式注册了提供程序: 我成功创建了公共密钥对象。 当我使用PGPEncryptedDataGenerator和密钥加密文件时,出现ClassNotFound异常。 似乎提供程序在运行时找不到此类,尽管我确定我有它的jar … 我在Tomcat上运行我的应用程序。使用Maven处理依赖关系- 我放入的充气城堡ja