我有一系列问题:
2.这个问题的发生主要是因为我没有1的鼻子。 - 如果我以字节数组的形式获得我的公钥,我该如何在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;
}
}
有人可以帮我这个吗?
答案 0 :(得分:0)
.p7s文件包含文档的签名。内容未加密,但看起来像。
文档文件要大得多,因为它包含日期,.p7s是签名。
要检查签名,您需要签署文档的证书的公共部分。
您可以查看这两个帖子来检查签名:
最后一件事是从p7s文件加载签名数据。 我做了一些搜索,然后回复你。