您好我正在尝试制作一个简单的加密,解密算法并正确加密代码,但描述代码无法正常工作
static string Encript(string value)
{
using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider())
{
UTF8Encoding utf8 = new UTF8Encoding();
byte[] data = md5.ComputeHash(utf8.GetBytes(value));
return Convert.ToBase64String(data);
}
}
static string Decript(string value)
{
using (TripleDESCryptoServiceProvider Tdecript = new TripleDESCryptoServiceProvider())
{
UTF8Encoding utf8 = new UTF8Encoding();
byte[] DataToDecrypt = Convert.FromBase64String(value);
return utf8.GetString(DataToDecrypt);
}
}
答案 0 :(得分:2)
首先,您使用Hash Function来“加密”您的数据。散列是一种单向函数。因此,您将无法“解密”您的数据。
其次:MD5不是一个好的散列机制。请使用像SHA256这样的东西。
第三:要加密+解密,我建议你使用AES256。
以下是如何实现这一目标的示例:
答案 1 :(得分:-1)
这可能无法解答原始问题但不使用MD5 - 它被视为已损坏。如果你真的想要保持信息安全,我会使用sha-256作为最低限度。
回答你的问题
据我所知,您使用的MD5哈希是一种单向函数 - 意味着您获取密码并将其哈希,将其粘贴在数据库中 - 当用户回来时您不解密数据并检查两个值是否匹配但是你创建了他们给你的数据的新散列并比较这两个。
如果你需要双向加密服务,我会看看AES。