【问题标题】:Difference in SHA1 in .NET and MySQL.NET 和 MySQL 中 SHA1 的差异
【发布时间】:2010-10-12 18:02:15
【问题描述】:

我有几段不同的代码,但简短的故事是我使用 SHA1 将一些密码插入 MySQL 数据库,并将 SHA1 哈希计算到 .NET 中,但它们不匹配。我认为这是我在 .NET 中的编码代码的问题。

SQL 代码:

INSERT INTO user_credentials (Password) VALUES (SHA1('password'));

5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 的密码哈希

.NET 代码:

public static string GetPasswordHash(string password)
{
    // problem here with encoding?
    byte[] byteArray = Encoding.ASCII.GetBytes(password);

    SHA1 sha = new SHA1CryptoServiceProvider();
    byte[] hashedPasswordBytes = sha.ComputeHash(byteArray);

    return Encoding.ASCII.GetString(hashedPasswordBytes);
}

密码散列到 [?a??????%l?3~???

感谢您的帮助!

【问题讨论】:

标签: c# mysql cryptography sha1 cryptographic-hash-function


【解决方案1】:

在 MySQL 示例中,您正在编码为 hexadecimal 字符串,在 .NET 示例中,您正在以 ASCII 编码。两种编码不一样。

如果您在 .NET 版本中转换为十六进制,您会得到正确的结果:

string hex = BitConverter.ToString(hashedPasswordBytes);

结果:

5B-AA-61-E4-C9-B9-3F-3F-06-82-25-0B-6C-F8-33-1B-7E-E6-8F-D8

【讨论】:

  • 完美。需要转换为降低并删除 - 的。
  • string hex = BitConverter.ToString(hashedPasswordBytes).Replace("-", "").ToLower
【解决方案2】:

您需要将[?a??????%l?3~??? 放入HEX 表示。您正在打印的内容可能是二进制形式(因此有多个 ? 字符)。

尝试这样做:

string hexstring = BitConverter.ToString(hashedPasswordBytes);

并查看hexstring 和 MySQL 哈希是否匹配。

【讨论】:

    【解决方案3】:

    以下将为您提供与 MySQL 生成的完全匹配的内容:

     BitConverter.ToString(SHA1CryptoServiceProvider.Create().ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(Password))).Replace("-", "").ToLower();
    

    【讨论】:

      【解决方案4】:

      SHA1 哈希值应该相等,但表示不相等。 MySql 输出一个十六进制字符串,所以你需要在 .NET 中做同样的事情:

      return String.Join(String.Empty, hashedPasswordBytes.Select(b => b.ToString("x2")))
      

      【讨论】:

      • +manyany 用于避免令人讨厌的冗余 Replace() 事情!
      【解决方案5】:

      您的 MySQL 表/数据库是如何编码的?尝试将两者都设置为 UTF-8(因此使用 Encoding.UTF8.GetBytes)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-23
        • 2013-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多