java - 双击启动 JAR 时出现 SecurityException
问题描述
我使用 BouncyCastle 编写了一个小型解密工具。如果我使用控制台启动它,它工作正常。
java -jar Decryptor.jar
但是,如果我通过双击 jar 文件来启动它,则解密失败并出现以下异常:
Caused by: java.lang.SecurityException: JCE cannot authenticate the provider BC
at javax.crypto.Cipher.getInstance(Cipher.java:656)
at javax.crypto.Cipher.getInstance(Cipher.java:595)
at logdecryptor.Decryptor.getDecryptedPrivateKey(Decryptor.java:93)
... 60 more
Caused by: java.util.jar.JarException: file:/C:/***/Decryptor.jar has unsigned entries - decryptor/Main.class
at javax.crypto.JarVerifier.verifySingleJar(JarVerifier.java:502)
at javax.crypto.JarVerifier.verifyJars(JarVerifier.java:363)
at javax.crypto.JarVerifier.verify(JarVerifier.java:289)
at javax.crypto.JceSecurity.verifyProviderJar(JceSecurity.java:164)
at javax.crypto.JceSecurity.getVerificationResult(JceSecurity.java:190)
at javax.crypto.Cipher.getInstance(Cipher.java:652)
... 62 more
我在 Windows 10 上运行,非管理员用户并且我没有使用管理员权限启动 jar 文件或命令行。为什么它的行为取决于我如何启动它?
编辑:
这是一个 Maven 构建。这是我的依赖项
<dependency>
<groupId>com.madgag.spongycastle</groupId>
<artifactId>pkix</artifactId>
<version>1.54.0.0</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk16</artifactId>
<version>1.46</version>
</dependency>
这里是我的插件
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>decryptor.Main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
运行目标:干净编译程序集:单个
解决方案
推荐阅读
- python - Python:一个存储库中有多个包还是每个存储库一个包?
- java - ARcore Cloud Anchor 有一个监听器知道 Cloud Anchor 何时托管?
- c# - 用于 ping 应用程序以检查网络节点的伪代码
- python - 如何过滤熊猫中的日期列?
- keras - 使用 keras 在 cnn 中预测我自己的图像
- jquery - 滚动回窗口顶部时,scrollTop 位置不正确
- symfony - How to validate data in a custom controler
- javascript - 为什么使用 API 上传 Word OfficeJS PDF 文档会保存一个空的 PDF 文档
- java - Java 可插件化应用程序消费者如何加载接口?
- go - Go channel: consume data from channel although not push anything to channel