मैंने कई मंचों और उदाहरणों की समीक्षा की, लेकिन किसी ने मेरी मदद नहीं की। मुझे किसी भी webservice से हस्ताक्षर सत्यापित करने की आवश्यकता है। मेरे पास सत्यापित करने के लिए सार्वजनिक कुंजी के साथ test.crt फ़ाइल है।हस्ताक्षर कैसे सत्यापित करें, सीआरटी फ़ाइल से सार्वजनिक कुंजी लोड हो रहा है?
static bool Verify(string text, string signature)
{
X509Certificate2 cert = new X509Certificate2(
HttpContext.Current.Server.MapPath("test-server.cert"));
RSACryptoServiceProvider csp = (RSACryptoServiceProvider) cert.PublicKey.Key;
// Hash the data
SHA1Managed sha1 = new SHA1Managed();
UnicodeEncoding encoding = new UnicodeEncoding();
byte[] data = encoding.GetBytes(text);
byte[] sign = Convert.FromBase64String(signature);
byte[] hash = sha1.ComputeHash(data);
return csp.VerifyHash(hash, CryptoConfig.MapNameToOID("SHA1"), sign);
}
लेकिन परिणाम हमेशा गलत है :(
मैं एक OpenSSL उदाहरण है:।
openssl base64 -d -in signature -out signature.bin
openssl dgst -sha1 -verify test-server.pub -signature signature.bin from_gateway
मुझे लगता है कि एक पाठ के लिए एक हस्ताक्षर उत्पन्न करता है एक सरल अनुप्रयोग बनाया है और तुरंत पुष्टि करता है। आप इसे यहां देख सकते हैं: https://dl.dropbox.com/u/1171045/11221877/Program.cs –
तो ऊपर की विधि ठीक है। क्या आप वाकई हस्ताक्षर और सत्यापन के लिए उचित प्रमाणपत्र का उपयोग कर रहे हैं? –
मैंने वेब ऐप के साथ ऐसा ही किया, इसलिए यह एक वेब चीज नहीं है। आप अपने ऐप पर वेब सेवा से हस्ताक्षर कैसे पास करते हैं? –