0
我想加密我的密码并存储到我的数据库SQL Server 2008 R2中。 为此,我从文本框中取出密码并使用正确的功能加密,并希望在后端存储。加密密码的数据类型
告诉我我必须使用哪个数据类型来加密密码列。
我想加密我的密码并存储到我的数据库SQL Server 2008 R2中。 为此,我从文本框中取出密码并使用正确的功能加密,并希望在后端存储。加密密码的数据类型
告诉我我必须使用哪个数据类型来加密密码列。
命名空间:
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是一个文本框,在这里你可以输入密码
这是如何回答“我应该使用哪种数据类型?”的问题? – Patrick
VARCHAR()。顺便说一句,你可能想读这个:http://www.asp.net/identity/overview/getting-started/introduction-to-aspnet-identity –
加密的字符串仍然是一个字符串。像任何其他字符串一样存储它。另外,不要*加密*密码,*散列*。有一个重大的区别。 – David