代码之家  ›  专栏  ›  技术社区  ›  GEOCHET S.Lott

MS-SQL中是否有与SHA1()等价的语句?

  •  30
  • GEOCHET S.Lott  · 技术社区  · 17 年前

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

    有人知道一个有效的等价物吗 关于MS-SQL?

    5 回复  |  直到 11 年前
        1
  •  50
  •   Joel Coehoorn    17 年前

    SQL Server 2005及更高版本具有 HashBytes() 作用

        2
  •  29
  •   Peter    13 年前

    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
  •  2
  •   LeppyR64    17 年前

    来自谷歌集团- A Possibility

        5
  •  1
  •   mr R    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"