2011-01-28 33 views
8

मैं कभी भी एन्क्रिप्शन लाइब्रेरी के साथ काम नहीं करता लेकिन मैं निजी कुंजी के साथ एक स्ट्रिंग एन्क्रिप्ट करना चाहता हूं और सार्वजनिक कुंजी द्वारा डिक्रिप्ट करना चाहता हूं। सी # में इसे कैसे प्राप्त करें। कृपया छोटे कोड स्निपेट के साथ मेरी मदद करें। धन्यवादनिजी कुंजी के साथ स्ट्रिंग को एन्क्रिप्ट कैसे करें और सार्वजनिक कुंजी के साथ डिक्रिप्ट करें?

+1

आपको आरएसए के साथ मनमाने ढंग से तारों को एन्क्रिप्ट नहीं करना चाहिए। आपको आरएसए के साथ एक यादृच्छिक रूप से जेनरेट की गई ** सही गद्देदार ** सममित कुंजी एन्क्रिप्ट करना चाहिए। – CodesInChaos

+1

@CodeInChaos: मैं मानता हूं कि आरएसए का अधिकांश समय उपयोग किया जा रहा है लेकिन आरएसए का उपयोग उस तक सीमित नहीं है। –

+0

AFAIK आरएसए मनमाने ढंग से अनपढ़ तारों को एन्कोड करने के लिए सुरक्षित नहीं है। – CodesInChaos

उत्तर

10

AFAIK, हालांकि सार्वजनिक और निजी कुंजी के बीच गणित में तकनीकी रूप से कोई अंतर नहीं है, तो आपको सुरक्षा कारणों से लगातार उनका उपयोग करने की आवश्यकता है।

आप निजी कुंजी से एन्क्रिप्ट करने और सार्वजनिक कुंजी के साथ डिक्रिप्ट करने के लिए कह रहे हैं। यह आमतौर पर चारों ओर गलत तरीका है। यदि आप इस दिशा को जाना चाहते हैं, तो आमतौर पर यह "डिजिटल हस्ताक्षर" नामक एक ऑपरेशन होता है।

यदि आप निजी कुंजी से साइन इन करते हैं तो यह सार्वजनिक कुंजी द्वारा उलट किया जा सकता है, तो यह वास्तव में एक रहस्य नहीं है। मुझे लगता है कि आप प्रेषक से वैध रूप से संदेश को प्रमाणीकृत करने की कोशिश कर रहे हैं। आपको डिजिटल हस्ताक्षर की आवश्यकता है - अभी भी सार्वजनिक-कुंजी-निजी-कुंजी (या "असममित") कुंजी के साथ किया जाता है।

डिजिटल हस्ताक्षर के साथ, संदेश स्वयं गुप्त नहीं है (सार्वजनिक आवश्यकता वाले किसी भी व्यक्ति को इसे किसी भी तरह से डिक्रिप्ट नहीं किया जा सकता है) लेकिन संदेश के आधार पर अतिरिक्त डेटा के साथ, सार्वजनिक कुंजी का उपयोग करके सत्यापित किया जा सकता है और केवल निजी कुंजी से मेल खाने वाले किसी व्यक्ति द्वारा गणना की गई है।

यह निम्न की तरह कुछ दिखाई देगा। अब आपको यह पता लगाना होगा कि आपको कुंजी कहां मिल जाएगी।

static byte[] GenerateDigitalSignature(byte[] data, RSAParameters asymmetricKey) 
{ 
    using (var rcsp = new RSACryptoServiceProvider()) 
    using (var cp = new SHA1CryptoServiceProvider()) 
    { 
    rcsp.ImportParameters(asymmetricKey); 

    return rcsp.SignData(data, cp); 
    } 
} 
+0

यह सिर्फ डेटा पर हस्ताक्षर करता है। यह इसे एन्क्रिप्ट नहीं करता है। –

+0

यूप ............ –

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

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