2010-03-06 6 views
5

मुझे app.config में कनेक्शन स्ट्रिंग एन्क्रिप्ट करने में मदद की ज़रूरत है और इसे वहां से सहेजें और इसे उपयोग के लिए डिक्रिप्ट करें।सी #: app.config में कनेक्शन स्ट्रिंग एन्क्रिप्ट करने में मदद की आवश्यकता है और इसे वहां से सहेजें और इसे डिक्रिप्ट करें और उपयोग करें?

+0

एक संदर्भ कार्यान्वयन वर्णन किया गया है [यहां] (https://stackoverflow.com/a/46405204/421695)। – sefakeles

उत्तर

0

@ ली 0liQ की टिप्पणी के आगे, आप कमांड लाइन प्रोग्राम का उपयोग कर सकते हैं जो .NET Framework 2.0+ aspnet_regiis के साथ आता है। एमएसडीएन दस्तावेज देखें here

2

यदि आप मैन्युअल रूप से सुरक्षा करना चाहते हैं, तो आप कक्षा ProtectedData का उपयोग कर सकते हैं। कुछ कोड:

class ConnectionStringProtector 
{ 
    readonly byte[] _salt = new byte[] { 1, 2, 3, 4, 5, 6 }; // Random values 
    readonly Encoding _encoding = Encoding.Unicode; 
    readonly DataProtectionScope _scope = DataProtectionScope.LocalMachine; 

    public string Unprotect(string str) 
    { 
     var protectedData = Convert.FromBase64String(str); 
     var unprotected = ProtectedData.Unprotect(protectedData, _salt, _scope); 
     return _encoding.GetString(unprotected); 
    } 

    public string Protect(string unprotectedString) 
    { 
     var unprotected = _encoding.GetBytes(unprotectedString); 
     var protectedData = ProtectedData.Protect(unprotected, _salt, _scope); 
     return Convert.ToBase64String(protectedData); 
    } 
} 

यहाँ एक साधारण परीक्षण है:

static void Main(string[] args) 
{ 
    var originalConnectionString = "original string"; 

    var protector = new ConnectionStringProtector(); 

    var protectedString = protector.Protect(originalConnectionString); 
    Console.WriteLine(protectedString); 
    Console.WriteLine(); 

    var unprotectedConnectionString = protector.Unprotect(protectedString); 
    Console.WriteLine(unprotectedConnectionString); 

    Console.WriteLine("Press ENTER to finish"); 
    Console.ReadLine(); 
} 
संबंधित मुद्दे