在 .NET 中验证电子签名



>我有一组问题:

  1. .p7s文件包含什么?我读到它通常是发送到电子邮件的加密邮件,但就我而言,我的硬盘上有一个文件和一个 .p7s 文件。该文件比 .p7s 大得多,所以我想知道里面有什么(当然还有以后如何使用它)。

2.出现这个问题主要是因为我没有 1 的 naswer。 - 如果我的公钥是字节数组的形式,如何在 C# 中验证签名?我在互联网上找到了这个,但同样,它使用了一些从电子邮件中获取的文本,老实说我不知道发生了什么:

public static bool Verify(byte[] signature, string text)
        {
            X509Certificate2 certificate = new X509Certificate2(@"D:My-CV.docx.p7s");
            if (signature == null)
                throw new ArgumentNullException("signature");
            if (certificate == null)
                throw new ArgumentNullException("certificate");
            //hash the text 
            // Methode 3 for Hashing
            System.Security.Cryptography.SHA1 hash3 = System.Security.Cryptography.SHA1.Create();
            System.Text.UnicodeEncoding encoder = new System.Text.UnicodeEncoding();
            byte[] combined = encoder.GetBytes(text);
            byte[] hash3byte = hash3.ComputeHash(combined);
            //Adding the text from the email, to a contentInfo 
            ContentInfo content = new ContentInfo(hash3byte);
            // decode the signature
            SignedCms verifyCms = new SignedCms(content, true);
            verifyCms.Decode(signature);
            // verify it
            try
            {
                verifyCms.CheckSignature(new X509Certificate2Collection(certificate), false);
                return true;
            }
            catch (CryptographicException)
            {
                return false;
            }
        } 

有人可以帮助我吗?

.p7s 文件包含文档的签名。内容未加密,但看起来像。

文档文件要大得多,因为它包含日期,.p7s 签名。

要检查签名,您需要用于签署文档的证书的公共部分。

你可以检查这两个帖子来检查签名:

  • 检查 x509 证书的签名
  • 在 C# 中,使用 x.509 证书对 xml 进行签名并检查签名

最后一件事是从 p7s 文件加载签名数据。我做了一些搜索,然后回到你身边。

相关内容

  • 没有找到相关文章

最新更新