【问题标题】:Is there an equivalent to SHA1() in MS-SQL?MS-SQL 中是否有等效于 SHA1() 的方法?
【发布时间】:2010-09-16 02:45:33
【问题描述】:

将几个存储过程从 MySQL 转换为 Microsoft SQL Server。一切都很顺利,除了一个程序使用了 MySQL SHA1() 函数。我似乎在 MS-SQL 中找不到与此等效的。

有人知道 MS-SQL 上 SHA1() 的有效等效项吗?

【问题讨论】:

  • 如果这是用于密码存储,我不得不提一下,在大多数情况下,简单地对原始字符串进行哈希处理是不够的。原因如下:md5decrypter.co.uk/sha1-decrypt.aspx ...除此之外...有大量的彩虹表,因此如今撤销未加盐的密码非常简单。

标签: sql mysql sha1 tsql sql-server


【解决方案1】:

SQL Server 2005 及更高版本具有HashBytes() 函数。

【讨论】:

  • 看起来很完美,在我泄漏的时候得到了回答。我喜欢stackoverflow。谢谢!
  • 现在,如果他们只是获得对 256 位算法的支持,而不仅仅是 160 位算法
【解决方案2】:

如果您想获得与 MySQL 生成的 SHA1 完全相同的哈希(即作为 varchar),您可以将 HashBytes 与 sys.fn_varbintohexsubstring 结合使用。例如

SELECT sys.fn_varbintohexsubstring(0, HashBytes('SHA1', 'password'), 1, 0)

更多详情请见http://accessrichard.blogspot.co.nz/2010/12/sql-server-and-net-equivalent-to-php.html

【讨论】:

    【解决方案3】:

    来自谷歌群组 - A Possibility

    【讨论】:

      【解决方案4】:

      您可能还想查看http://www.stev.org/post/2011/01/30/MS-SQL-SHASum-Support.aspx,您应该能够对其进行修改以产生您想要的任何东西。虽然可能需要一些 c# 编码。

      【讨论】:

        【解决方案5】:

        MSSQL 服务器

        HASHBYTES('SHA1', CAST('abcd@#' as nvarchar(max)))
        CONVERT(VARCHAR(MAX), HASHBYTES('SHA1', CAST('abcd@#' as nvarchar(max))) , 2)
        
        /* result */
        0x77DD873DBAB2D81786AB9AE6EA91B1F59980E48C  
        77DD873DBAB2D81786AB9AE6EA91B1F59980E48C
        

        C#

        using (SHA1Managed sha1 = new SHA1Managed())
        {
            string input = "abcd@#";
            var hash = sha1.ComputeHash(Encoding.Unicode.GetBytes(input));
            var sb = new StringBuilder(hash.Length * 2);
            
            foreach (byte b in hash)
            {
                sb.Append(b.ToString("X2")); // can be "x2" if you want lowercase
            }
            return sb.ToString();
        }
        //result "77DD873DBAB2D81786AB9AE6EA91B1F59980E48C"
        

        【讨论】:

          【解决方案6】:

          我不相信有原生支持,但你可能想看看这个......

          http://blogs.msdn.com/sqlcat/archive/2005/09/16/469257.aspx

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2010-10-22
            • 1970-01-01
            • 2019-09-12
            • 2011-03-20
            • 1970-01-01
            • 1970-01-01
            • 2014-04-23
            相关资源
            最近更新 更多