2009-09-27 12 views
5

मेरे पास एक .NET अनुप्रयोग है। मुझे फ़ाइल में एन्क्रिप्टेड टेक्स्ट मान को स्टोर करने की आवश्यकता है, फिर कोड में कहीं और एन्क्रिप्टेड मान पुनर्प्राप्त करें, और इसे डिक्रिप्ट करें।मैं कुछ सरल फ़ाइल एन्क्रिप्शन और डिक्रिप्शन कैसे करूं?

मैं, बस कुछ है कि कहने के लिए पर्याप्त होगा पृथ्वी पर सबसे मजबूत या सबसे सुरक्षित एन्क्रिप्शन विधि जरूरत नहीं है - मैं एन्क्रिप्टेड मूल्य है, और इसे डिक्रिप्ट करने के लिए कर रहा हूँ।

मैंने क्रिप्टोग्राफी को आजमाने और उपयोग करने के लिए नेट पर बहुत कुछ खोजा है, लेकिन मुझे लगता है कि अधिकांश उदाहरण, अवधारणाओं को स्पष्ट रूप से परिभाषित नहीं करते हैं, और सबसे बुरा हिस्सा यह है कि वे मशीन विशिष्ट हैं।

अनिवार्य रूप से, किसी को कृपया एक लिंक एक आसान करने के लिए एन्क्रिप्शन कि एक फाइल करने के लिए स्ट्रिंग मान एन्क्रिप्ट कर सकते हैं, और फिर इन मूल्यों को पुनः प्राप्त करने की विधि का उपयोग करने भेज सकते हैं।

+0

"मुझे पृथ्वी पर सबसे मजबूत या सबसे सुरक्षित एन्क्रिप्शन विधि की आवश्यकता नहीं है" - फिर इसे एन्क्रिप्ट क्यों करें? यदि आप मजबूत एन्क्रिप्शन का उपयोग नहीं करते हैं और जानकारी का मूल्य है, तो यह बहुत संभव है कि कोई ** ** इसे ** डिक्रिप्ट करेगा। – TrueWill

+1

ऐसा लगता है कि आप पूछ रहे हैं कि आपकी इमारत में कौन सी सुरक्षा व्यवस्था डाली जाए, लेकिन आप हमें नहीं बता रहे हैं कि इमारत में क्या मूल्यवान है। एक बैंक में सुरक्षा प्रणाली एक दूतावास में सुरक्षा प्रणाली से बहुत अलग है। हम एक एन्क्रिप्शन एल्गोरिदम की अनुशंसा नहीं कर सकते हैं जब तक कि हम नहीं जानते कि क्या संरक्षित किया जा रहा है और किस खतरे से। समस्या से एन्क्रिप्शन फेंकने का निर्णय लेने से पहले आप जिस संसाधन की रक्षा कर रहे हैं और जिस खतरे से आप चिंतित हैं, उसका वर्णन करें; एन्क्रिप्शन सही समाधान नहीं हो सकता है। एक एसीएल सही समाधान हो सकता है, या कुछ अन्य सुरक्षा तकनीक हो सकती है। –

+1

इसके अलावा, यह न भूलें कि एन्क्रिप्शन सुरक्षित बनाता है कुंजी की सुरक्षा है। * आप सुरक्षित कुंजी प्रबंधन कैसे कर रहे हैं? * यह मुश्किल समस्या है।ऑफ-द-शेल्फ एन्क्रिप्शन एल्गोरिदम का उपयोग तुलना करके आसान है। –

उत्तर

4

Stackoverflow एक्सटेंशन पुस्तकालय एन्क्रिप्ट करने के लिए आरएसए के साथ & डिक्रिप्ट स्ट्रिंग दो अच्छी छोटी एक्सटेंशन मिला है। Topic Here कुछ बार खुद का इस्तेमाल किया लेकिन वास्तव में इसका परीक्षण नहीं किया है, लेकिन यह एसओ एक्सटेंशन लाइब्रेरी में है इसलिए मुझे लगता है कि यह & स्थिर है।

एन्क्रिप्ट;

public static string Encrypt(this string stringToEncrypt, string key) 
     { 
      if (string.IsNullOrEmpty(stringToEncrypt)) 
      { 
       throw new ArgumentException("An empty string value cannot be encrypted."); 
      } 

      if (string.IsNullOrEmpty(key)) 
      { 
       throw new ArgumentException("Cannot encrypt using an empty key. Please supply an encryption key."); 
      } 

      System.Security.Cryptography.CspParameters cspp = new System.Security.Cryptography.CspParameters(); 
      cspp.KeyContainerName = key; 

      System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider(cspp); 
      rsa.PersistKeyInCsp = true; 

      byte[] bytes = rsa.Encrypt(System.Text.UTF8Encoding.UTF8.GetBytes(stringToEncrypt), true); 

      return BitConverter.ToString(bytes); 
     } 

डिक्रिप्ट;

public static string Decrypt(this string stringToDecrypt, string key) 
     { 
      string result = null; 

      if (string.IsNullOrEmpty(stringToDecrypt)) 
      { 
       throw new ArgumentException("An empty string value cannot be encrypted."); 
      } 

      if (string.IsNullOrEmpty(key)) 
      { 
       throw new ArgumentException("Cannot decrypt using an empty key. Please supply a decryption key."); 
      } 

      try 
      { 
       System.Security.Cryptography.CspParameters cspp = new System.Security.Cryptography.CspParameters(); 
       cspp.KeyContainerName = key; 

       System.Security.Cryptography.RSACryptoServiceProvider rsa = new System.Security.Cryptography.RSACryptoServiceProvider(cspp); 
       rsa.PersistKeyInCsp = true; 

       string[] decryptArray = stringToDecrypt.Split(new string[] { "-" }, StringSplitOptions.None); 
       byte[] decryptByteArray = Array.ConvertAll<string, byte>(decryptArray, (s => Convert.ToByte(byte.Parse(s, System.Globalization.NumberStyles.HexNumber)))); 


       byte[] bytes = rsa.Decrypt(decryptByteArray, true); 

       result = System.Text.UTF8Encoding.UTF8.GetString(bytes); 

      } 
      finally 
      { 
       // no need for further processing 
      } 

      return result; 
     } 
+0

बिल्कुल वही उत्तर जो मैं ढूंढ रहा था, जो कुछ काम करता है, और अत्यधिक जटिल नहीं है। मैं इसे आरएसए के बारे में अधिक जानने के लिए संदर्भ के रूप में उपयोग करूंगा। धन्यवाद फिर से Tiax –

+0

छोटे तारों के लिए ठीक है लेकिन यह 86 वर्णों से अधिक लंबे समय तक इनपुट स्ट्रिंग के लिए विफल हो जाएगा। आम तौर पर, आरएसए डेटा के बड़े निकायों के लिए उपयुक्त नहीं है। –

1

यदि आप सममित एन्क्रिप्शन करने की सोच रहे हैं, तो मैं Enterprise Library Cryptography Application Block पर विचार करूंगा। डेविड हेडन had a useful blog post about it, हालांकि एंटरप्राइज़ लाइब्रेरी 2.0 (वर्तमान 4.1 है) के लिए, मुझे लगता है कि आप अभी भी उपयोगी होंगे।

+0

धन्यवाद रिचर्ड, क्या आपने इसे पहले इस्तेमाल किया है? –

+0

हां- यह उपयोग करना काफी आसान था और कॉन्फ़िगरेशन टूल काफी सीधे आगे था। मैं मूल रूप से क्रिप्टोग्राफी एप्लिकेशन ब्लॉक को तैनात करने में वर्णित परिदृश्य में उपयोग किया जाता है- http://msdn.microsoft.com/en-us/library/dd203351.aspx – RichardOD

+0

@ रिचर्ड, ब्लॉग में उदाहरण के बाद व्यस्त, और फिर इसे प्राप्त करें बिंदु ... http://s637.photobucket.com/albums/uu91/mleppan/?action=view¤t=Capture.png, तो इसका मतलब यह है कि अगर मैं अपनी स्थानीय देव मशीन पर एन्क्रिप्टेड फ़ाइल बनाता हूं, तो मैं नहीं कर सकता इसे होस्ट किए गए वेब सर्वर पर डिक्रिप्ट करें? –

0

यहां क्रिप्टोग्राफ़ी लाइब्रेरी का उपयोग करके एक ब्लॉग पोस्ट है जो .NET एक सममित एन्क्रिप्शन/डिक्रिप्शन के लिए आता है।

एक सममित एल्गोरिथ्म एन्क्रिप्ट और डिक्रिप्ट करने के लिए एक ही कुंजी का उपयोग करता है, तो आप एक कुंजी का उपयोग जितना ताला और अपनी कार के दरवाजे अनलॉक करने के लिए।

एक सार्वजनिक कुंजी एल्गोरिदम एन्क्रिप्ट करने के लिए एक कुंजी का उपयोग करेगा और दूसरा डिक्रिप्ट करने के लिए उपयोग करेगा, इसलिए, मैं आपको एक फ़ाइल भेज सकता हूं जो एन्क्रिप्टेड है, और पता है कि केवल आप इसे डिक्रिप्ट कर सकते हैं, क्योंकि आपने अपनी कुंजी को बहुत सुरक्षित और निजी रखा है ।

http://blog.binaryocean.com/2006/01/08/NETSymmetricEncryption.aspx

1

नेट में आप एक SymmetricAlgorithm का एक उदाहरण का उपयोग कर सकते हैं। यहां स्टैक ओवरफ़्लो पर a question that demonstrates how to encrypt and decrypt strings using a password है। आप पासवर्ड को संभालने के लिए कैसे जा रहे हैं, यह एक अलग मामला है, लेकिन मुझे लगता है कि आप इसके बारे में बहुत चिंतित नहीं हैं और केवल प्राइइंग आंख से कुछ पाठ छिपाना चाहते हैं।

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