2008-09-23 7 views
6

मुझे कंपनी प्रोजेक्ट के लिए सी # में पीकेआई लाइब्रेरी को लागू करने के लिए काम सौंपा गया है, और इसके अच्छे कार्यान्वयन में असमर्थ रहे हैं। कई पुस्तकालयों के रूप में दिखाई देते हैं, और कई टूटी हुई लिंक एमएसडीएन पुस्तकालयों को इंगित करती हैं जिन्हें हटा दिया गया है। मैंने Crypt32.dll का उपयोग करने वाले लोगों को देखा है, लोग अपनी खुद की पुस्तकालयों का निर्माण कर रहे हैं, सिस्टम सर्टिफिकेट स्टोर्स तक पहुंचने के लिए पी/इनवॉक का उपयोग करने वाले लोग, अंतर्निर्मित पुस्तकालयों का विस्तार करने वाले लोग, उदाहरण जो सी # (जैसे जावा उदाहरण) पर लागू नहीं होते हैं, और वाणिज्यिक पुस्तकालयों।एन्क्रिप्शन पुस्तकालय?

मेरा प्रश्न है, डेटा के सरल एन्क्रिप्शन/डिक्रिप्शन के लिए कौन सा कार्यान्वयन/पुस्तकालय सबसे अधिक अनुशंसित है?

कुछ पृष्ठभूमि के रूप में जो मैं इसके साथ करने की योजना बना रहा हूं, मुझे बस एक निजी कुंजी (.pfx) का उपयोग करके संदेशों को एन्क्रिप्ट करना होगा, और सार्वजनिक कुंजी (.cer) के साथ डिक्रिप्ट करना होगा। परियोजना के इस स्तर पर संदेश हस्ताक्षर और प्रमाणीकरण की आवश्यकता नहीं है, हालांकि यह भविष्य में हो सकता है। मैंने एन्क्रिप्शन लंबाई के संदर्भ को देखा है जो मुझे असहज बनाता है। हमें किसी भी लम्बे संदेश को एन्क्रिप्ट करने में सक्षम होना चाहिए (कारण के भीतर, बिल्कुल!)। क्या मुझे ऐसा कुछ करने की ज़रूरत है, और यदि हां, तो क्या इससे निपटने का कोई तरीका है?

यदि संभव हो तो मैं विंडोज सर्टिफिकेट मैनेजर में सार्वजनिक/निजी कुंजी स्टोर नहीं करना चाहूंगा, लेकिन अगर यह कार्यान्वयन को काफी सरल बनाता है, तो हो।

मुझे पता PKI और एन्क्रिप्शन एक बड़े और जटिल विषय है, लेकिन मैं वैसे भी (एक, आशा कर सकते हैं ना?) एक अपेक्षाकृत सरल पुस्तकालय के लिए आशा करती हूं कि ...

धन्यवाद!

उत्तर

12

ठीक है, आपने यह उल्लेख नहीं किया है कि अंतर्निर्मित कक्षा में आपकी आवश्यकता शामिल नहीं है, तो System.Security.Cryptography.RSACryptoServiceProvider के बारे में कैसे?

इसमें असममित रूप से एन्क्रिप्ट/डिक्रिप्ट करने के लिए एक बड़े सेट योग्य तरीके हैं।

कई ट्यूटोरियल/रास्ते में लेने के लिए गाइड कर रहे हैं:

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

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

अनगिनत अधिक कर रहे हैं Google के माध्यम से पाया जा सकता है।

अद्यतन: के बारे में लंबाई-restrictments, यह नहीं किसी भी समस्याओं होना चाहिए, अगर तुम सिर्फ दोनों पक्षों, एन्क्रिप्शन और डिक्रिप्शन पर एक ही बफर-कलन विधि को लागू।

Update2: हाँ, मेरे उदाहरण RSACryptoProvider था, लेकिन आप, System.Security.Cryptography.AsymmetricAlgorithm से किसी भी वर्ग है कि निकला उपयोग कर सकते हैं अगर आप एक सार्वजनिक/निजी कुंजी-समाधान चाहते हैं। या अपना खुद का निर्माण करें ... या शायद नहीं :)

+0

वास्तव में पर एक अच्छा ट्यूटोरियल है, System.Security.Cryptography नाम स्थान के पूरे लागू होता है। इसमें अधिकांश क्रिप्टोसिस्टम के लिए आवश्यक सभी प्राइमेटिव होना चाहिए। –

+0

क्या आप बफर एल्गोरिदम पर स्पष्टीकरण दे सकते हैं? Additonally, मुझे आश्चर्य है कि यह आरएसए डिक्रिप्शन/एन्क्रिप्शन के साथ मानक है .. इस एन्क्रिप्शन में से कुछ ग्राहकों को भेजा जाएगा, और मैं गारंटी नहीं दे सकता कि वे उसी बफर एल्गोरिदम का उपयोग करेंगे जिसका मैं निर्णय लेता हूं। क्या यह एक समस्या होने की संभावना है, या नहीं? – Gabriel

0

हां, अंतर्निहित कक्षाओं में क्या गलत है?

और आप इस

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

सुनिश्चित नहीं हैं कि इस निजी कुंजी के लिए एक अच्छा विचार है, हालांकि की तरह कुछ का उपयोग कर सकते आप Windows प्रमाणपत्र संग्रह का उपयोग नहीं करना चाहते हैं।

विषय here

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