2014-07-06 70 views
0

我想加密我的密碼並存儲到我的數據庫SQL Server 2008 R2中。 爲此,我從文本框中取出密碼並使用正確的功能加密,並希望在後端存儲。加密密碼的數據類型

告訴我我必須使用哪個數據類型來加密密碼列。

+0

VARCHAR()。順便說一句,你可能想讀這個:http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity –

+3

加密的字符串仍然是一個字符串。像任何其他字符串一樣存儲它。另外,不要*加密*密碼,*散列*。有一個重大的區別。 – David

回答

-1

命名空間:

using System.Security.Cryptography; 

加密功能:

public static string Encrypt(string Message) 
     { 

      string Password = Message; 
      byte[] Results; 
      System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding(); 
      MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider(); 
      byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Password)); 
      TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider(); 
      TDESAlgorithm.Key = TDESKey; 
      TDESAlgorithm.Mode = CipherMode.ECB; 
      TDESAlgorithm.Padding = PaddingMode.PKCS7; 
      byte[] DataToEncrypt = UTF8.GetBytes(Message); 
      try 
      { 
       ICryptoTransform Encryptor = TDESAlgorithm.CreateEncryptor(); 
       Results = Encryptor.TransformFinalBlock(DataToEncrypt, 0, DataToEncrypt.Length); 
      } 
      finally 
      { 
       TDESAlgorithm.Clear(); 
       HashProvider.Clear(); 
      } 
      return Convert.ToBase64String(Results); 
     } 

解密函數:

public static string Decrypt(string Message) 
     { 
      string Password = Message; 
      byte[] Results; 
      System.Text.UTF8Encoding UTF8 = new System.Text.UTF8Encoding(); 
      MD5CryptoServiceProvider HashProvider = new MD5CryptoServiceProvider(); 
      byte[] TDESKey = HashProvider.ComputeHash(UTF8.GetBytes(Password)); 
      TripleDESCryptoServiceProvider TDESAlgorithm = new TripleDESCryptoServiceProvider(); 
      TDESAlgorithm.Key = TDESKey; 
      TDESAlgorithm.Mode = CipherMode.ECB; 
      TDESAlgorithm.Padding = PaddingMode.PKCS7; 
      byte[] DataToDecrypt = Convert.FromBase64String(Message); 
      try 
      { 
       ICryptoTransform Decryptor = TDESAlgorithm.CreateDecryptor(); 
       Results = Decryptor.TransformFinalBlock(DataToDecrypt, 0, DataToDecrypt.Length); 
      } 
      finally 
      { 
       TDESAlgorithm.Clear(); 
       HashProvider.Clear(); 
      } 
      return UTF8.GetString(Results); 
     } 

如何使用?

對於加密:

string encryptpassword=Encrypt(txtPassword.Text.Trim()); 

對於解密:

string decryptpassword=Decrypt(txtPassword.Text.Trim()); 

注:txtPassword是一個文本框,在這裏你可以輸入密碼

+0

這是如何回答「我應該使用哪種數據類型?」的問題? – Patrick