asp.net中的md5加密

时间:2011-04-28 17:18:04

标签: c# asp.net encryption

我正在使用md5加密来获取公司的薪资数据 只有在用户输入正确的密码时才能查看该页面。我将加密的密码存储在数据库中 检索iam时比较加密密码 有什么办法可以将密码用作密钥吗?

我想实现以下

  1. 如果用户正在保存薪资数据,则此密码哈希将加密数据
  2. 如果用户正在查看工资信息,则应使用此密码解密数据
  3. 还是我必须使用像Triple Des这样的算法?

2 个答案:

答案 0 :(得分:1)

是的,你需要使用(可逆的)encryption algorithm,而不是(单向)hash algorithm

答案 1 :(得分:1)

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;
    }
}