Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不在Eclipse中时,Bouncy Castle的NoSuchAlgorithmException_Java_Maven_Bouncycastle - Fatal编程技术网

Java 不在Eclipse中时,Bouncy Castle的NoSuchAlgorithmException

Java 不在Eclipse中时,Bouncy Castle的NoSuchAlgorithmException,java,maven,bouncycastle,Java,Maven,Bouncycastle,我们使用bouncy castle进行加密。 当我们在Eclipse中以调试模式启动代码时没有任何问题,但是当我们手动启动JAR时,我们有一个NoSuchAlgorithmException。 JAR是使用maven插件配置构建的 <dependencies> <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-j

我们使用bouncy castle进行加密。 当我们在Eclipse中以调试模式启动代码时没有任何问题,但是当我们手动启动JAR时,我们有一个
NoSuchAlgorithmException
。 JAR是使用maven插件配置构建的

<dependencies>
    <dependency>
        <groupId>org.bouncycastle</groupId>
        <artifactId>bcprov-jdk15on</artifactId>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <createDependencyReducedPom>false</createDependencyReducedPom>
                        <minimizeJar>false</minimizeJar>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
我们已经将安全策略更改为Oracle提供的无限制策略,但问题仍然存在。
有什么想法吗?

一个解决方案是将Bouncy Castle provider添加到JRE java.security provider,即JRE外部库中的Bouncy Castle JAR,并将其从JAR中排除。但在处理多个部署时,这是一个难题。还有其他解决方案吗?答案在另一篇文章中,请参阅使用spring boot插件而不是shade插件解决了这个问题
Security.insertProviderAt(new BouncyCastleProvider(), 1);
Cipher cipher = Cipher.getInstance("RSA/None/OAEPWithSHA256AndMGF1Padding");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
return cipher.doFinal(data);