【发布时间】:2018-04-11 07:49:10
【问题描述】:
我遇到了这个异常
PdfPKCS7 pkcs7 = fields.verifySignature(name);
这是完整的代码
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.security.PdfPKCS7;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
public class NewClass {
public static void main(String arg[])
throws IOException, GeneralSecurityException {
String path = "C:/Akshay/output.pdf";
System.out.println(path);
PdfReader reader = new PdfReader(path);
AcroFields fields = reader.getAcroFields();
ArrayList<String> names = fields.getSignatureNames();
for (String name : names) {
System.out.println("===== " + name + " =====");
verifySignature(fields, name);
}
System.out.println();
}
public static void verifySignature(AcroFields fields, String name)
throws GeneralSecurityException, IOException {
System.out.println("Signature covers whole document: "
+ fields.signatureCoversWholeDocument(name));
System.out.println("Document revision: " + fields.getRevision(name)
+ " of " + fields.getTotalRevisions());
PdfPKCS7 pkcs7 = fields.verifySignature(name);
System.out.println("Integrity check OK? " + pkcs7.verify());
}
}
使用的罐子:
- itextpdf-5.5.13.jar
- bcprov-jdk14-1.49.jar
【问题讨论】:
-
您需要使用
java.security.Security.addProvider(new BouncyCastleProvider());注册bc provider。 -
如果上面的答案没有解决您的问题,是否可以提供有关您正在签名的密钥(类型、长度、使用的签名方法)的一些详细信息?
-
上述解决方案确实有效.. 谢谢@Paulo Soares
标签: java cryptography itext digital-signature