gpt4 book ai didi

java - org.bouncycaSTLe.asn1.ASN1ObjectIdentifier”的签名者信息与签名者信息不匹配

转载 作者:行者123 更新时间:2023-12-01 18:05:54 25 4
gpt4 key购买 nike

当我从代码库调用 PdfEncryptor.encrypt() 时,我遇到了上述异常。在SO中,我发现通常会因为itextpdf和bouncycaSTLe jar的错误组合而发生。但我在下面提到我认为这是正确的依赖关系。

   <dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.1.3</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk16</artifactId>
<version>1.46</version>
</dependency>
<dependency>
<groupId>com.test</groupId>
<artifactId>test</artifactId>
<version>1.0.0</version>
</dependency>

我们通过其他项目(测试)间接依赖itext。 “测试”项目有以下条目

<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.0.4</version>
</dependency>

堆栈跟踪:

class "org.bouncycastle.asn1.ASN1ObjectIdentifier"'s signer information does not match signer information of other classes in the same package at java.lang.ClassLoader.checkCerts(ClassLoader.java:952) at java.lang.ClassLoader.preDefineClass(ClassLoader.java:666) at java.lang.ClassLoader.defineClass(ClassLoader.java:794) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2494) at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:860) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1302) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167) at com.itextpdf.text.pdf.PdfEncryption.(PdfEncryption.java:147) at com.itextpdf.text.pdf.PdfWriter.setEncryption(PdfWriter.java:2041) at com.itextpdf.text.pdf.PdfStamper.setEncryption(PdfStamper.java:295) at com.itextpdf.text.pdf.PdfStamper.setEncryption(PdfStamper.java:330) at com.itextpdf.text.pdf.PdfEncryptor.encrypt(PdfEncryptor.java:206)

如果您有任何解决方案,请告诉我。这将非常有帮助

最佳答案

您正在混合两个 iText 版本:一个是指我的名字 (com.lowagie),日期为 2007 年 6 月的过时版本,另一个是较新版本 (com.itextpdf),日期为从 2011 年 11 月开始。这两个不同的 iText 版本需要不同版本的 BouncyCaSTLe。您应该限制自己使用 iText 的单一版本(最好是 2016 年以来的版本)并使用相应的 BouncyCaSTLe 版本。您将在您使用的 iText 版本随附的 POM 中找到所需的 BouncyCaSTLe 版本。请注意,您还必须小心检查部署代码的位置。某些 Web 服务器附带的 BouncyCaSTLe 版本与您需要的版本不同。这可能会导致不一致。另一个例子是Android。 Android 附带旧版本的 BouncyCaSTLe 以及需要新版本与旧版本冲突的软件。这就是 iTextG(iText 的 Android 端口)使用 SpongyCaSTLe 而不是 BouncyCaSTLe 的原因。 SpongyCaSTLe 与 BouncyCaSTLe 相同,除了包名称之外。这样 SpongyCaSTLe 就不会与 Android 上提供的 BouncyCaSTLe 版本发生冲突。

长话短说:你说我有下面提到的依赖项,但你的假设我认为是正确的是错误的,因为你正在混合两个不同版本的 iText。

关于java - org.bouncycaSTLe.asn1.ASN1ObjectIdentifier”的签名者信息与签名者信息不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36444628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com