我可以使用 fdf 文件对文件进行数字签名吗

can I use a fdf file to digitally sign a file

提问人:kolek 提问时间:9/1/2023 更新时间:9/4/2023 访问量:82

问:

我有一个请求,要求使用 .net 使用 fdf 文件对 pdf 文件进行签名,但我找不到有关如何启动的任何信息,甚至找不到任何信息,即使可能也是如此。

根据我的理解,fdf文件只是一个值的集合,而不是证书 就像这里解释的那样 https://docs.appligent.com/fdfmerge/fdfmerge-form-data-format/

FDF 文件是一个纯文本文件,其中包含表单字段及其值的列表。虽然我们将向您展示如何手动创建一个,但大多数情况下 FDF 文件是软件生成的。以下是创建 FDF 文件的一些更常见的方法:

使用Adobe Acrobat将表单数据直接导出到文件。

我可以使用 pfx 文件对 pdf 进行签名,但我从未听说过 fdf 文件

我需要一些关于这个话题的帮助

.NET 安全 iText PDF 生成 数字签名

评论

1赞 mkl 9/4/2023
FDF 文件也可用于交换 X.509 证书(尝试从 Acrobat 导出一些身份,FDF 将是格式选择之一)。要求您使用 fdf 文件签署 pdf 文件的人可能认为他们可以向您发送这样的 FDF,您可以使用该 FDF 文件中的数据进行签名。但不幸的是,我只看到了通过 FDF 发送的公共证书,而不是私钥。因此,如果确实有这种 FDF 使用,那么您很可能不能仅使用该 FDF 签署 PDF。

答:

0赞 K J 9/4/2023 #1

下面是一个 PDF 签名字段。enter image description here

您可以在此处复制文件(请注意,这些只是概念验证,您的模板会更大)

%PDF-1.2
1 0 obj <</Type/Catalog/Pages 2 0 R/AcroForm 3 0 R>> endobj
2 0 obj <</Type/Pages/Count 1/Kids[3 0 R]>> endobj
3 0 obj <</Type/Page/Parent 2 0 R/MediaBox[0 0 596 842]/Annots[4 0 R]/Contents 7 0 R
/Resources<</Font<</F1<</BaseFont/Helvetica/Encoding/WinAnsiEncoding/Name/F1/Subtype/Type1/Type/Font>>>>>>>> endobj
5 0 obj <</Fields[4 0 R]/SigFlags 1>> endobj
4 0 obj <</AP<</N 6 0 R>>/F 4/FT/Sig/MK<<>>/P 3 0 R/Rect[106 801 256 833]/Subtype/Widget/T(Signature1)/Type/Annot>> endobj

%       Here is the space for the digital signature field
6 0 obj <</BBox[0 0 150 32]/Length 0/Resources<<>>/Subtype/Form/Type/XObject>>
stream
endstream
endobj

%      Here are the Page contents just a line and text as graphics around the signature field
7 0 obj <</Length 107>>
stream
q 1 J 1 w 50 800 m 250 800 l .5 .5 .5 RG S
0 0 1 rg BT /F1 12 Tf 1 0 0 1 50 802 Tm (Signature) Tj ET Q
endstream
endobj

xref
trailer <</Root 1 0 R>>
%%EOF

这是 Squiggle 先生进行数字签名所需的 FDF(表单数据文件)。

%FDF-1.4
%âãÏÓ
1 0 obj
<<
/FDF << /F (unsignedproforma.pdf)
/Fields [<</T (Signature1)>>]
/UF (unsignedproforma.pdf) >>
/Type /Catalog
>>
endobj
trailer
<< /Root 1 0 R >>
%%EOF

因此,Squiggle 先生将 FDF 发送到 FDF 应用程序,例如 Tracker PDFXedit(或 Acrobat),在该应用程序中加载激活了该字段的 PDF,因此他们可以添加带有远程添加时间戳的个人数字签名。在手动保存到新文件时,已添加签名以供其他阅读器使用。
enter image description here enter image description here

需要注意的关键点是,必须在 FDF 编辑 PDF 后应用签名,以便签名 THEN 将显示文件历史记录中的该点之后没有进一步的更改。(因此签名不能在 FDF 内部)

因此,图形和个人签名文件将由本地系统应用 这是使用 Acrobats 签名插件的 (在加密之前,请参阅样式和水印中的徽标将来自插件。

enter image description here

因此,这并不能解释如何使用 FDF 进行签名,我们需要将其视为 WetSignature 而不是 PKS 签名

湿(橡皮图章图像)签名 PDF

%PDF-1.4
1 0 obj <</AcroForm 2 0 R/Pages 3 0 R/Type/Catalog>> endobj
2 0 obj <</Annots[4 0 R]/Contents 5 0 R/DR<</Font<</Helv 6 0 R>>>>/Fields[4 0 R]/MediaBox[0 0 596 842]/Parent 3 0 R
/Resources<</Font<</F0<</BaseFont/Helvetica/Encoding/WinAnsiEncoding/Name/F1/Subtype/Type1/Type/Font>>>>>>/SigFlags 3/Type/Page>> endobj
3 0 obj <</Count 1/Kids[2 0 R]/Type/Pages>> endobj
4 0 obj <</AP<</N 7 0 R>>/BS<</W 0>>/DA(0 g /Helv 11 Tf)/DV(Enter full name of above)/F 4/FT/Tx/M(D:2023)/MK<</BC[0 0 0]>>
/P 2 0 R/Rect[106 780 256 799]/Subtype/Widget/T(Signed)/TU(Signed by)/Type/Annot/V(Enter full name of above)>> endobj
5 0 obj <</Length 107>> stream
q 1 J 1 w 50 800 m 250 800 l .5 .5 .5 RG S
0 0 1 rg BT /F0 12 Tf 1 0 0 1 50 802 Tm (Signature) Tj ET Q
endstream
endobj
6 0 obj <</BaseFont/Helvetica/Subtype/Type1/Type/Font>> endobj
7 0 obj <</BBox[0 0 150 18]/Type/XObject/Length 113/Resources<</Font<</Helv 6 0 R>>>>/Subtype/Form>>
stream
/Tx BMC q 0 0 150 18 re W n BT 0 g 0 Tc 0 Tw 100 Tz 0 Tr/Helv 11 Tf 0 5 Td (Enter full name of above)Tj ET Q EMC
endstream
endobj

xref
trailer <</Root 1 0 R>>
startxref
%%EOF

Squiggle 先生的 FDF

%FDF-1.4
%âãÏÓ
1 0 obj << /FDF << /Annots [2 0 R] /F (asignedproforma2.pdf) /Fields [<< /T (Signed) /V (Mr I. Squiggle \(AKA Ink SQuId\))
>>] /UF (asignedproforma2.pdf) >> /Type /Catalog >> endobj
2 0 obj << /AP << /N 3 0 R >> /C [1 0 0] /CreationDate (D:2023) /F 4 /IT /Stamp /M (D:2023) /Name /WetSign
/NM (12345678-1234-1234-0123456789abcdef) /Page 0 /Rect [106 801 256 833] /Subj (Stamp) /Subtype /Stamp /T (TBA) /Type /Annot >> endobj
3 0 obj << /BBox [0 0 150 36] /Length 30 /Resources << /XObject << /Im0 4 0 R >> >> /Subtype /Form /Type /XObject >>
stream
q 150 0 0 36 0 0 cm /Im0 Do Q
endstream
endobj
4 0 obj << /BitsPerComponent 1 /ColorSpace /DeviceGray /Height 30 /Length 570 /Subtype /Image /Width 150 >>
stream
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÁü?ÿÿðÿÿÿÿÿÿÿÿÿÿÿÿÿ xÿÿÀÿÿÿÿÿÿÿÿÿÿÿü  ÿÿ€ ÿÿÿÿÿÿÿÿÿÿÿø  ÿÿ  ÿÿÿÿÿÿÿÿÿÿð  ÿü  ÿÿÿÿÿÿÿÿÿÿà ÿø ÿÿÿÿÿÿÿÿÿÿà ÿððÿÇÿÿÿÿÿÿÿÿàÿþÿðþ ÿƒÿÿÿÿÿÿÿÿàÿþÿà?ÿ€ÿƒÿÿÿÿÿÿÿÿàÿþÿÀÿàƒÿÿÿÿÿÿÿÿàÿÿÿÀÿÿàƒÿÿÿÿÿÿÿÿàÿÿÿÁÿÿÀÿÁÿÿÿÿÿÿÿÿàÿÿÿÁÿÿ€ÿÁÿÿÿÿÿÿÿÿðÿÿÁÿþÿÁÿÿÿÿÿÿÿÿðÿÿÁÿøÿÁÿÿÿÿÿÿÿÿðÿÿÿÁÿàÿÁÿÿÿÿÿÿÿÿàÿÿÿÀÿ€ÿÁÿÿÿÿÿÿÿÿ€ÿÿÿÿà~ ?ÿÀÿÿÿÿÿÿÿþ ÿÿÿÿàp ÿÿàÿÿÿÿÿÿÿàÿÿÿÿð ÿÿàÿÿÿÿÿÿü ÿÿÿÿø ÿÿàÿÿÿÿÿÿø ÿÿÿÿø ?ÿÿàÿÿÿÿÿÿø ?ÿÿÿÿà ÿÿÿñÿÿÿÿÿÿøÿÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿüÿÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÀÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
endstream
endobj
trailer
<<
/Root 1 0 R
>>
%%EOF

结果enter image description here

因此,您只需双击FDF(或通过您的程序调用它),Adobe Reader就会为您签署您的费用表或支票。

enter image description here

所以总结一下

通过使用FDF,多个用户都可以将他们的签名作为法律印章,根据需要在任意数量的页面上签名,然后“最终文件”可以与其他任何文件完全相同地签名。

enter image description here enter image description here