2012-01-06 61 views

回答

7
+0

密碼tnkx很多的幫助和鏈接功能 – 2012-01-06 15:34:00

3

你可以逮捕(的DbContext或IdentityDbContext如果使用ASPNET標識)從上下文類連接字符串調用和修改連接字符串返回。在我的情況下,我不是加密整個連接字符串,而是選擇只加密密碼。您可以使用相同的方法來加密整個連接字符串。

注:此功能(StringCipher.Decrypt)用於加密和解密來自這個話題 - >https://stackoverflow.com/a/1344255/1390025

在這裏你抓的呼叫連接字符串

 public YourDB() 
     : base(GetSqlConnection("DefaultConnection")) 
    {} 

在上面場景我從app.config或web.config獲取連接字符串。但是,根據您的請求,您可以加密整個連接字符串並像下面的示例一樣;

public YourDB() 
     : base(StringCipher.Decrypt("your-encrypted-connection-string", "passphrase-used-to-encrypt")) 
    {} 

在僅該密碼被加密的情況下,該功能下面替換純文本加密的密碼,並返回連接字符串;

 public static string GetSqlConnection(string connectionStringName = "DefaultConnection") 
    { 
     // optionally defaults to "DefaultConnection" if no connection string name is inputted 
     string connectionString = ConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString; 
     string passPhrase = "passphrase-used-to-encrypt"; 
     // decrypt password 
     string password = get_prase_after_word(connectionString, "password=", ";"); 
     connectionString = connectionString.Replace(password, StringCipher.Decrypt(password, passPhrase)); 
     return connectionString; 
    } 

用來解析從連接字符串

 public static string get_prase_after_word(string search_string_in, string word_before_in, string word_after_in) 
    { 
     int myStartPos = 0; 
     string myWorkString = ""; 

     // get position where phrase "word_before_in" ends 

     if (!string.IsNullOrEmpty(word_before_in)) 
     { 
      myStartPos = search_string_in.ToLower().IndexOf(word_before_in) + word_before_in.Length; 

      // extract remaining text 
      myWorkString = search_string_in.Substring(myStartPos, search_string_in.Length - myStartPos).Trim(); 

      if (!string.IsNullOrEmpty(word_after_in)) 
      { 
       // get position where phrase starts in the working string 
       myWorkString = myWorkString.Substring(0, myWorkString.IndexOf(word_after_in)).Trim(); 

      } 
     } 
     else 
     { 
      myWorkString = string.Empty; 
     } 
     return myWorkString.Trim(); 
    }