关于可见的数字签名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于可见的数字签名相关的知识,希望对你有一定的参考价值。
给定一个带有可见数字签名的输入pdf文件,我想获得一个新的pdf文件,该文件将签名的可视化表示保留为图形对象,但不再作为签名字段。
我用一个工具(参见输入和输出文件)完成了这个,但我想知道如何使用iText。
输入:input.pdf
输出:output.pdf
答案
请注意,可以验证签名是否完好(使用来自作为CDS或AATL成员的CA的证书),以便您可以测试(1)“完整性”,(2)“身份验证”,以及(3)“不可抵赖性”。通过丢弃签名字段,您将丢失所有信息,并且在签名(1)之后没有人能够知道文档是否被更改,也没有人签署文档(2)。签名者总是声称他从未签署该文件(3),因为任何人都可以创建他的签名的视觉表示。
通过删除签名,您将创建一个没有实际签名的副本,类似于您打印经过数字签名的文档时所拥有的副本。您将通过删除实际的数字签名丢弃重要信息,仅保留视觉外观。
话虽这么说,你要求的东西非常简单:你想要压扁PDF文件。这在FlattenSignature示例中显示。检查文件output_no_longer_signed.pdf,你会发现它看起来与你的output.pdf完全一样。
实现这一目标的代码非常简单:
public void manipulatePdf(String src, String dest)
throws DocumentException, IOException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
stamper.setFormFlattening(true);
stamper.close();
}
另一答案
对我来说布鲁诺的回答没有用。我需要打电话给setGenerateAppearances(true)
才能看到扁平的签名
public void flatPdf(String src, String dest) throws DocumentException, IOException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
AcroFields fields = stamper.getAcroFields();
fields.setGenerateAppearances(true);
stamper.setFormFlattening(true);
stamper.close();
}
用:iText 5.5.13
以上是关于关于可见的数字签名的主要内容,如果未能解决你的问题,请参考以下文章