小编A77*_*7ak的帖子

C# 验证 PDF 签名

尝试验证 PDF 签名不起作用。PDF 由 Adob​​e Acrobat 签名,然后尝试使用客户端证书的公钥对其进行验证。

所以我得到了客户端证书的公钥,对 PDF 进行散列并验证散列是否等于 pdf 签名,但它失败了。

HttpClientCertificate cert = request.ClientCertificate;
X509Certificate2 cert2 = new X509Certificate2(cert.Certificate);

PdfReader pdfreader = new PdfReader("path_to_file");

AcroFields fields = pdfreader.AcroFields;
AcroFields.Item item = fields.GetFieldItem("Signature1");
List<string> names = fields.GetSignatureNames();

foreach (string name in names){
     PdfDictionary dict = fields.GetSignatureDictionary(name);
     PdfPKCS7 pkcs7 = fields.VerifySignature(name);
     Org.BouncyCastle.X509.X509Certificate pdfSign = pkcs7.SigningCertificate;

     // Get its associated CSP and public key
     RSACryptoServiceProvider csp = (RSACryptoServiceProvider)cert2.PublicKey.Key;

     // Hash the data
     SHA256 sha256 = new SHA256Managed();

     byte[] pdfBytes = System.IO.File.ReadAllBytes("path_to_pdf"); …
Run Code Online (Sandbox Code Playgroud)

c# pdf rsa itext digital-signature

2
推荐指数
1
解决办法
5600
查看次数

标签 统计

c# ×1

digital-signature ×1

itext ×1

pdf ×1

rsa ×1