【问题标题】:SQL Server 2005 hashbytes(‘sha1’,'code') alternative in MySQLMySQL 中的 SQL Server 2005 hashbytes('sha1','code') 替代方案
【发布时间】:2011-02-03 22:26:05
【问题描述】:

您好,我有几个以这种方式加密的密码:

hashbytes(‘sha1’,'password')

我们正在计划使用 SQL Server 2005 迁移到 MySQL。

在 MySQL 或 PHP 中有一个等效的哈希函数。

因为我使用标准的 SHA1 算法,结果与我使用 SQL Server 算法的结果不同。

【问题讨论】:

    标签: mysql database sql-server-2005 sha


    【解决方案1】:

    我发现php使用ascii编码,所以为了在sql server management studio中获得相同的结果,例如使用varchar(8000)作为@input。

    【讨论】:

      【解决方案2】:

      MySQL 有一个SHA1 函数:

      mysql> SELECT SHA1('password');
      +------------------------------------------+
      | SHA1('password')                         |
      +------------------------------------------+
      | 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 |
      +------------------------------------------+
      

      等效的 SQL Server 函数会产生什么?

      【讨论】:

      • DECLARE @HashThis nvarchar(MAX); SELECT @HashThis = 'password'; SELECT HashBytes('SHA1', @HashThis); 返回 0xE8F97FBA9104D1EA5047948E6DFB67FACD9F5B73 与 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 不同
      • 为了让这篇文章更容易阅读——他得到了不同的哈希值,但这是因为他使用的是 NVARCHAR 而不是 VARCHAR。根据另一篇文章,您可以使用 sys.fn_varbintohexsubstring(0, HashBytes('SHA1', @HashThis), 1, 0) 来获得完全匹配...前提是 @HashThis 是 varchar(8000)
      猜你喜欢
      • 2022-01-07
      • 1970-01-01
      • 2019-06-15
      • 2011-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      相关资源
      最近更新 更多