>我有一组问题:
- .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 文件加载签名数据。我做了一些搜索,然后回到你身边。