2014-07-06 66 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