1

XMLファイルを受け取りました

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
 <Envelope>

   <OrgContent>
   </OrgContent>

   <Signature>
     Y7z1Y+c+u80a9vhUSi`....`
     `......`u80a9vhUSi==
   </Signature>

   <Certificate>
     MIIExjCCA66gAwIBAgIJNv5`.......`
     `.....`66gAwIBAgIJNv5=
   </Certificate>

</Envelope>

私は<signature>署名されたデータに渡し<certificate>、バイト[]配列に変換した後、値をpubkeyに渡しました..次の関数に..

static bool Verify(byte[] signature, byte[] pubKeyBytes)
{
   RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
   RSAParameters RSAKeyInfo = RSA.ExportParameters(false);
   RSAKeyInfo.Modulus = pubKeyBytes;
   RSA.ImportParameters(RSAKeyInfo);
   // Hash the data
   SHA1Managed sha1 = new SHA1Managed();
   UnicodeEncoding encoding = new UnicodeEncoding();
   // byte[] data = encoding.GetBytes(text);
   byte[] hash = sha1.ComputeHash(base64Decode());

   // Verify the signature with the hash
   return RSA.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), signature);
}

base64Decode()メソッドは、元のコンテンツを に変換して返しますbyte[]

エラーは発生していませんが、まだ...verify()メソッドが返さfalseれ、署名が検証されていません..(署名は有効です)。このコードの何が問題なのか誰にもわかりますか..???

4

0 に答える 0