Pdf 使用itext 5.5.5的数字签名

Pdf 使用itext 5.5.5的数字签名,pdf,itext,Pdf,Itext,我从iText5.2.1升级到iText5.5.5 我使用PdfStamper和PDFSignaturePerance应用数字签名 这是我的代码片段 PdfStamper stamper = PdfStamper.createSignature(reader, byteArrayOutputStream,'\0'); PdfSignatureAppearance appearance = stamper.getSignatureAppearance(); appearance.setCrypto

我从iText5.2.1升级到iText5.5.5

我使用PdfStamper和PDFSignaturePerance应用数字签名

这是我的代码片段

PdfStamper stamper = PdfStamper.createSignature(reader, byteArrayOutputStream,'\0');
PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
appearance.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);
从上面的代码中可以看出,当前版本中不存在一些东西

1) 在iText的版本5.5.5中,我找不到PDFSignaturePerance类的“setCrypto”方法

2) PDF签名性能不包括已签名的WINCER_

如果有人能帮我用新的替代方案应用数字签名


谢谢。

事实上,自从iText 5.3以来,签名API有了一些变化,setCrypto方法不再存在。我阅读了布鲁诺的白皮书,以下是对我有用的代码:

PdfReader reader = new PdfReader(new FileInputStream(file));
FileOutputStream fout = new FileOutputStream(new File(targetDir, fileName));
PdfStamper stp = PdfStamper.createSignature(reader, fout, '\0');

PdfSignatureAppearance sap = stp.getSignatureAppearance();
sap.setReason(reason);
sap.setLocation("Pleber-Christ");

ExternalDigest digest = new BouncyCastleDigest();
BouncyCastleProvider provider = new BouncyCastleProvider();
ExternalSignature signature = new PrivateKeySignature(key, DigestAlgorithms.SHA256, provider.getName());
MakeSignature.signDetached(sap, digest, signature, chain,   null, null, null, 0, CryptoStandard.CMS);

必须将bcprov-jdk15on-1.60.jar和bcpkix-jdk15on-1.60.jar放在类路径中。您可能需要对其进行一些更改以满足您的需要。

在5.3.x版本的过程中,iText签名得到了根本性的改进。您可能想下载Bruno Lowagie(iText软件)撰写的关于使用iText创建和验证数字PDF签名的白皮书,以赶上进度。谢谢。我去看看。