【发布时间】:2011-02-03 22:26:05
【问题描述】:
您好,我有几个以这种方式加密的密码:
hashbytes(‘sha1’,'password')
我们正在计划使用 SQL Server 2005 迁移到 MySQL。
在 MySQL 或 PHP 中有一个等效的哈希函数。
因为我使用标准的 SHA1 算法,结果与我使用 SQL Server 算法的结果不同。
【问题讨论】:
标签: mysql database sql-server-2005 sha
您好,我有几个以这种方式加密的密码:
hashbytes(‘sha1’,'password')
我们正在计划使用 SQL Server 2005 迁移到 MySQL。
在 MySQL 或 PHP 中有一个等效的哈希函数。
因为我使用标准的 SHA1 算法,结果与我使用 SQL Server 算法的结果不同。
【问题讨论】:
标签: mysql database sql-server-2005 sha
我发现php使用ascii编码,所以为了在sql server management studio中获得相同的结果,例如使用varchar(8000)作为@input。
【讨论】:
MySQL 有一个SHA1 函数:
mysql> SELECT SHA1('password');
+------------------------------------------+
| SHA1('password') |
+------------------------------------------+
| 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 |
+------------------------------------------+
等效的 SQL Server 函数会产生什么?
【讨论】:
DECLARE @HashThis nvarchar(MAX); SELECT @HashThis = 'password'; SELECT HashBytes('SHA1', @HashThis); 返回 0xE8F97FBA9104D1EA5047948E6DFB67FACD9F5B73 与 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 不同
sys.fn_varbintohexsubstring(0, HashBytes('SHA1', @HashThis), 1, 0) 来获得完全匹配...前提是 @HashThis 是 varchar(8000)