अस्वीकरण: मुझे जावा और क्रिप्टोग्राफी पता है, लेकिन सी # और .NET का मेरा ज्ञान बहुत सीमित है। मैं यहां केवल अपने Google-fu कौशल के प्रभाव में लिख रहा हूं।
मान लिया जाये कि आप PKCS # 8 एन्कोड की गई RSA निजी कुंजी को डिकोड कर सकता है, तो, क्या मैं MSDN पर पढ़ा से, कोड के बाकी इस तरह दिखना चाहिए:
byte[] hv = MD5.Create().ComputeHash(data);
RSACryptoServiceProvider rsp = new RSACryptoServiceProvider();
RSAParameters rsp = new RSAParameters();
// here fill rsp fields by decoding pkcs8PrivateKey
rsp.ImportParameters(key);
RSAPKCS1SignatureFormatter rf = new RSAPKCS1SignatureFormatter(rsp);
rf.SetHashAlgorithm("MD5");
byte[] signature = rf.CreateSignature(hv);
प्रासंगिक वर्गों में हैं System.Security.Cryptography
नामस्थान।
पीकेसीएस # 8 कुंजी ब्लॉब डिकोडिंग (यानी rsp
फ़ील्ड में भरने के लिए) के लिए, मुझे this page मिला जो सी # में एक कमांड लाइन उपयोगिता का वर्णन करता है जो कि नौकरी कर सकता है। स्रोत कोड प्रदान किया गया है और एक सी # फ़ाइल है। जो मैंने इसे पढ़ा है, वह कोड पीकेसीएस # 8 फ़ाइल "मैन्युअल रूप से" डीकोड करता है; अप्रत्यक्ष रूप से, इसका मतलब यह होना चाहिए कि कच्चे .NET (2.0) में पीकेसीएस # 8 कुंजी फ़ाइल डिकोडिंग की सुविधा नहीं है (अन्यथा उस उपकरण का लेखक इस तरह के डिकोडिंग को लागू करने की परेशानी के लिए नहीं होता)। अपने काम के लिए, आप उस स्रोत फ़ाइल से उन हिस्सों को खोद सकते हैं जिन्हें आप चाहते हैं, पीईएम और सममित एन्क्रिप्शन के बारे में कुछ भी छोड़ना; आपका एंट्री पॉइंट DecodePrivateKeyInfo()
फ़ंक्शन होगा, जो स्पष्ट रूप से एक डीईआर-एन्कोडेड अनएन्क्रिप्टेड पीकेसीएस # 8 फ़ाइल की अपेक्षा करता है, जैसे कि जावा के PKCS8EncodedKeySpec
।
स्रोत
2010-02-19 19:38:13
थोड़ा विषय से हटकर है, लेकिन यदि संभव हो, तो आप निश्चित रूप से किसी भी अनुप्रयोगों में MD5 का उपयोग कर – Krystian
'चाहिए' एक मजबूत शब्द है, भले ही MD5 कमजोर साबित हो चुका है कि यह आसानी से तोड़ा जा सकता है (देखें से बचना चाहिए http : //merlot.usc.edu/csac-f06/papers/Wang05a.pdf, विकिपीडिया द्वारा संदर्भित) यह हमेशा निर्णय लेने के लिए प्रोग्रामर तक नहीं है। :-) – Patrick
@ क्रिस्टियन, यह निर्णय लिया गया था जिसने 6 साल पहले इंटरफ़ेस बनाया था :) – balint