md5 encryption in asp.net
本文关键字:net asp in encryption md5 | 更新日期: 2023-09-27 17:53:51
我使用md5加密我公司的工资数据。
只有当用户输入正确的密码时,才能查看该页面。我将加密密码存储在数据库中。
检索iam时比较加密的密码。
我能不能用那个密码当钥匙?
我想实现以下目标
- 如果用户正在保存工资数据,该密码散列将加密数据
- 如果用户正在查看工资信息,则应该使用此密码来解密数据
或者我必须使用像三重Des这样的算法吗?
是的,您需要使用(可逆)加密算法,而不是(单向)哈希算法。
MD5是单向加密,使用Triple DES加密数据,MD5加密密码。下面是我使用的:
public static string Crypt(this string data, string password, bool encrypt)
{
var u8Salt = new byte[] { 0x26, 0x19, 0x81, 0x4E, 0xA0, 0x6D, 0x95, 0x34, 0x26, 0x75, 0x64, 0x05, 0xF6 };
var iPass = new Rfc2898DeriveBytes(password, u8Salt);
var iAlg = Aes.Create();
iAlg.Key = iPass.GetBytes(32);
iAlg.IV = iPass.GetBytes(16);
var iTrans = (encrypt) ? iAlg.CreateEncryptor() : iAlg.CreateDecryptor();
var iMem = new MemoryStream();
var iCrypt = new CryptoStream(iMem, iTrans, CryptoStreamMode.Write);
var u8Data = encrypt ? Encoding.Unicode.GetBytes(data) : Convert.FromBase64String(data);
try
{
iCrypt.Write(u8Data, 0, u8Data.Length);
iCrypt.Close();
return encrypt ? Convert.ToBase64String(iMem.ToArray()) : Encoding.Unicode.GetString(iMem.ToArray());
}
catch
{
return null;
}
}