سؤال

لقد تم تكليفي بتنفيذ مكتبة PKI في C# لمشروع شركة، ولم أتمكن من العثور على تنفيذ جيد لها.يبدو أن هناك مكتبات متعددة والعديد من الروابط المعطلة التي تشير إلى مكتبات MSDN التي تمت إزالتها.لقد رأيت أشخاصًا يستخدمون Crypt32.dll، وأشخاصًا يبنون مكتباتهم الخاصة، وأشخاصًا يستخدمون P/Invoce للوصول إلى مخازن شهادات النظام، وأشخاصًا يقومون بتوسيع المكتبات المضمنة، وأمثلة لا تنطبق ببساطة على C# (على سبيل المثال.أمثلة جافا)، والمكتبات التجارية.

سؤالي هو، ما هو التطبيق/المكتبة الموصى بها أكثر للتشفير/فك التشفير البسيط للبيانات؟

كخلفية لما أخطط للقيام به، أحتاج ببساطة إلى تشفير الرسائل باستخدام مفتاح خاص (.pfx)، وفك التشفير باستخدام المفاتيح العامة (.cer).لا يلزم توقيع الرسالة والمصادقة عليها في هذا المستوى من المشروع، على الرغم من أنه قد يكون ذلك في المستقبل.لقد رأيت إشارة إلى أطوال التشفير مما جعلني أشعر بعدم الارتياح.يجب أن نكون قادرين على تشفير أي رسالة طويلة (في حدود المعقول بالطبع!).هل هذا شيء يجب أن أقلق بشأنه، وإذا كان الأمر كذلك، فهل هناك طريقة للتعامل معه؟

أفضل عدم تخزين المفاتيح العامة/الخاصة في مدير شهادات Windows إذا كان ذلك ممكنًا، ولكن إذا كان ذلك يجعل التنفيذ أسهل بكثير، فليكن.

أدرك أن البنية التحتية للمفاتيح العامة والتشفير موضوع كبير ومعقد، ولكني آمل الحصول على مكتبة بسيطة نسبيًا على أي حال...(يمكن للمرء أن يأمل، أليس كذلك؟)

شكرًا!

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

المحلول

حسنًا، لم تذكر أن الفصل المدمج لا يغطي احتياجاتك، فماذا عن ذلك؟ System.Security.Cryptography.RSACryptoServiceProvider?

يحتوي على مجموعة كبيرة من الطرق المؤهلة لتشفير/فك تشفير التدفقات بشكل غير متماثل.

هناك العديد من البرامج التعليمية/الأدلة التي ستأخذك على طول الطريق:

http://www.codeproject.com/KB/security/RSACryptoPad.aspx

http://www.eggheadcafe.com/articles/20020630.asp

هناك عدد لا يحصى من الأشياء التي يمكن العثور عليها من خلال جوجل.

تحديث:فيما يتعلق بقيود الطول، لا ينبغي أن تكون هناك أية مشكلات إذا قمت فقط بتنفيذ نفس خوارزمية المخزن المؤقت على كلا الجانبين، التشفير وفك التشفير.

تحديث2:نعم، كان المثال الخاص بي RSACryptoProvider, ، ولكن يمكنك استخدام أي فئة مشتقة من النظام.الأمن.التشفير.الخوارزمية غير المتماثلة, ، إذا كنت تريد حلاً رئيسيًا/خاصًا.أو قم ببناء نفسك...أو ربما لا :)

نصائح أخرى

نعم، ما هو الخطأ في الطبقات المضمنة؟

وإذا كنت لا ترغب في استخدام مخزن شهادات Windows، فيمكنك استخدام شيء مثل هذا

RSACryptoServiceProvider rscp = new RSACryptoServiceProvider();
rscp.FromXmlString("<RSAKeyValue><Modulus>key data gere</Modulus><Exponent></Exponent></RSAKeyValue>");

لست متأكدًا من أن هذه فكرة جيدة بالنسبة للمفاتيح الخاصة.

هناك برنامج تعليمي جيد حول هذا الموضوع هنا

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