我正在使用以下功能加密密码并将其存储到我的数据库中。现在我需要将其解密并与登录用户进行比较。请帮帮我。
public static string encrypt_string_using_MD5(string s)
{
byte[] byte_array = System.Text.Encoding.Default.GetBytes(s);
System.Security.Cryptography.HashAlgorithm alg =
System.Security.Cryptography.HashAlgorithm.Create("MD5");
byte[] byte_array2 = alg.ComputeHash(byte_array);
System.Text.StringBuilder sb
= new System.Text.StringBuilder(byte_array2.Length);
foreach(byte b in byte_array2)
{
sb.AppendFormat("{0:X2}", b);
}
return sb.ToString();
}
答案 0 :(得分:5)
你无法解密哈希。哈希就像是原始内容的签名。 你可以做的是将这个哈希存储在数据库中。每当用户输入密码时。您计算用户输入的值的哈希值并将其与存储的哈希值进行比较,如果匹配,则验证成功
答案 1 :(得分:0)
您无法对其进行解密,因为它未加密。
您创建文本的哈希值,而不是加密版本。
哈希就像数据指纹。例如,这可以用于将密码安全地存储在数据库中。当有人想再次登录时,您再次计算哈希并检查新哈希与数据库中的哈希是否匹配。如果他们这样做,那么密码是相同的,用户可以登录。
可以在http://www.securityinnovationeurope.com/blog/whats-the-difference-between-hashing-and-encrypting
找到一个很好的解释答案 2 :(得分:0)
因此你使用MD5,它是不可逆转的。你为什么要以纯文本的形式发送密码......?
无论哪种方式,当比较值(一个普通,一个散列)散列普通的并比较它。