2011-09-28 186 views
0

我得到CryptographicException“哈希值不正确。”我试过verifyCms.CheckSignature(true); (同样的错误) 我试图在ContentInfo添加整个邮件(发件人,主题,正文,HTML Sectione ...)(同样的错误)C#使用SignedCms验证数字签名

public static bool Verify(byte[] signature, X509Certificate2 certificate) 
{ 
     X509Certificate2 cert=new X509Certificate2(@"D:\Work\Digital Signature\smime.p7s"); 
    certificate = cert; 

    if(signature == null) 
     throw new ArgumentNullException("signature"); 
    if(certificate == null) 
     throw new ArgumentNullException("certificate"); 

    //the text from the body of the mail  
    string text = "FINAL TEST SIGNED"; 
    //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

您是否找到任何解决方案?我有同样的问题.. –

回答