كيفية استيراد PKCS # 8 RSA PIRTKEY (التي أنشأتها Openssl) في C #

StackOverflow https://stackoverflow.com/questions/1722305

  •  19-09-2019
  •  | 
  •  

سؤال

أحاول إيجاد طريقة لقراءة مفتاح خاص تم إنشاؤه باستخدام Openssl PKCS # 8 RSA في C # دون استخدام مكتبة خارجية.

هل يعرف شخص ما كيف يمكنني القيام بذلك؟

هل كانت مفيدة؟

المحلول

أسهل طريقة للقيام بذلك مع مكتبة خارجية، تستخدم (مجانا) مكون رئيسي في Chillkat / الخاص: استخدام ذلك، يمكن إجراء استيراد المفتاح باستخدام فقط بضعة خطوط من التعليمات البرمجية وإذا كنت على استعداد لدفع 149 دولارا أو نحو ذلك لبقية المكتبة، فسوف يتعامل مع مفاهيم التشفير العامة أسهل كثيرا أيضا.

وعلى عكس Microsoft .NET Framework العادية، مشروع أحادي هل يبدو أن يكون لديك PKCS8 التنفيذ التي المصدر الكامل C # متاح. قد تكون هذه مناسبة كنقطة انطلاق في حال لم تتمكن من الاعتماد على المكتبات الخارجية، وتحمل ترخيص (lgpl 2.0) المرتبط بأعمال رمز أحادي لك ...

وأخيرا، فإن PKCS # 8 تنسيق ليس من الصعب للغاية التحليل، وكائنات زوج RSA / DSA الرئيسية هي حسب PKCS # 11. ومن السهل نسبيا التحويل إلى .NET X509Certificate بمجرد اكتشاف أين تذهب جميع البتات - أنا فعلا فعلت هذا في vb.net منذ فترة، ولكن للأسف غير قادر على مشاركة هذا الرمز.

نصائح أخرى

شكرا لإجابتك.

نصي لإنشاء مفتاح RSA استخدمت Openssl Whit:

(برنامج نصي لينكس)

openssl genrsa -out ${NAME}_openssl.key 2048
openssl pkcs8 -topk8 -in ${NAME}_openssl.key -nocrypt > ${NAME}.key
openssl req -new -x509 -key ${NAME}.key -out ${NAME}.crt -outform DER

في C # نحتاج إلى PIRTKEY بتنسيق XML. انا إستعملت هذه محلل للقيام بذلك.

لفك تشفير التحدي نحن بحاجة إلى استخدام:

  byte[] challange = server.getChallenge();

  RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider();

  rsaProvider.FromXmlString(Demo.Properties.Resources.XmlPrivateKey);

  byte[] plaintext = rsaProvider.Decrypt(challange, false);

لتشفير شهادة خادم Whit، نحتاج إلى استخدامها:

  RSACryptoServiceProvider rsaProvider = x509.PublicKey.Key as RSACryptoServiceProvider;

  byte[] answer = RsaProvider.Encrypt(plaintext, false);

شكرا للاستشارات JaVascience

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top