【发布时间】:2013-05-31 12:36:41
【问题描述】:
我要签署一份 pdf 文件。我刚刚看到了一个使用 itext 的示例。
我已经使用 KeyTool 创建了证书。我签署了一份文件。 PDF 阅读器告诉我一切正常,文件已签名。
当我看到代码时,我注意到:
ExternalDigest digest = new BouncyCastleDigest();
MakeSignature.signDetached(appearance, digest, pks, chain,null, null, null, 0, CryptoStandard.CMS);
我不明白一件事 - 散列的 PDF 文档是摘要。计算文档哈希的函数(例如 SHA 256)t 是一个DIGEST。但在这个例子中我有
ExternalDigest 摘要 = new BouncyCastleDigest();
这是什么意思?是pdf文档哈希吗?...
完整的代码,来自 itext 文档:
public static void sign(String src, String dest, PrivateKey pk,String digestAlgorithm, String provider) {
PdfReader reader = new PdfReader(src);
FileOutputStream os = new FileOutputStream(dest);
PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0');
PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
appearance.setVisibleSignature(new Rectangle(0, 10,20, 15), 1, "sig");
ExternalDigest digest = new BouncyCastleDigest();
ExternalSignature signature = new PrivateKeySignature(pk, digestAlgorithm, provider);
MakeSignature.signDetached(appearance, digest, signature, chain, null,null, null, 0, subfilter);
}
【问题讨论】:
-
那个 digest 参数包含一个可以计算摘要的对象,它不包含预先计算的摘要值。
标签: java cryptography itext bouncycastle