2010-07-26 12 views
6

मैं एक DSA निजी कुंजी DSACryptoServiceProvider.ToXmlString का उपयोग कर निर्यात किया है करने के लिए नेट XML स्वरूप में कन्वर्ट DSA असममित कुंजी, और मैं इसे PEM प्रारूप ("file.pem") में बदलने की जरूरत है, तो मैं इसे खोल सकते हैं PHP में openssl_pkey_get_private फ़ंक्शन का उपयोग कर।PEM प्रारूप

मैं इसे कैसे पूरा करूं?

समाधान किसी भी मदद के लिए DSACryptoServiceProvider.ExportCspBlob विधि का उपयोग कर सकता है, मुझे बस कुंजी को बदलने की आवश्यकता है।

उत्तर

9

बाउंसीकैसल सी # लाइब्रेरी क्लास DotNetUtilities का उपयोग करके, यह काफी आसान है।

DSACryptoServiceProvider dsa = new DSACryptoServiceProvider(1024); 
AsymmetricCipherKeyPair dsaKey = DotNetUtilities.GetDsaKeyPair(dsa); 
using (StreamWriter sw = new StreamWriter("dsa.pem")) 
{ 
    PemWriter pw = new PemWriter(sw); 
    pw.WriteObject(dsaKey); 
} 
+1

+1, मुझे आश्चर्य है कि शुद्ध नेट फ्रेमवर्क (कोई अतिरिक्त बाहरी पुस्तकालय) का उपयोग करके ऐसा करने का कोई सीधा तरीका नहीं है। – Paya

+0

खैर, पीईएम प्रारूप वास्तविक मानक नहीं है, और एक वास्तविक तथ्य है। –

+0

.NET 4.5 और NuGet (1.7.0) से नवीनतम BouncyCastle का उपयोग करके इस सटीक कोड को चलाते हुए, मुझे pw.WriteObject (dsaKey) को कॉल करते समय एक StackOverflowException मिलता है। मैंने .NET 3.0, 3.5, और 4.0, एक ही समस्या का उपयोग करने का भी प्रयास किया। कोई विचार क्या गलत है? –

संबंधित मुद्दे