2011-09-28 3 views
0

CryptographicException "해시 값이 올바르지 않습니다."가 나타납니다. 나는 verifyCms.CheckSignature (true)를 시도했다. (같은 오류) 나는 ContentInfo에서 전체 메일 (보낸 사람, 제목, 본문, HTML Sectione ...) (같은 오류)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

해결책을 찾았습니까? 나는 같은 문제가있다 .. –

답변