如何解密C#中的文本?

时间:2015-09-16 07:00:23

标签: c#

我正在使用以下功能加密密码并将其存储到我的数据库中。现在我需要将其解密并与登录用户进行比较。请帮帮我。

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

3 个答案:

答案 0 :(得分:5)

你无法解密哈希。哈希就像是原始内容的签名。 你可以做的是将这个哈希存储在数据库中。每当用户输入密码时。您计算用户输入的值的哈希值并将其与存储的哈希值进行比较,如果匹配,则验证成功

答案 1 :(得分:0)

您无法对其进行解密,因为它未加密。

您创建文本的哈希值,而不是加密版本。

哈希就像数据指纹。例如,这可以用于将密码安全地存储在数据库中。当有人想再次登录时,您再次计算哈希并检查新哈希与数据库中的哈希是否匹配。如果他们这样做,那么密码是相同的,用户可以登录。

可以在http://www.securityinnovationeurope.com/blog/whats-the-difference-between-hashing-and-encrypting

找到一个很好的解释

答案 2 :(得分:0)

因此你使用MD5,它是不可逆转的。你为什么要以纯文本的形式发送密码......?

无论哪种方式,当比较值(一个普通,一个散列)散列普通的并比较它。