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

MS-SQL中是否有与SHA1()等价的语句?,sql,mysql,sha1,tsql,sql-server,Sql,Mysql,Sha1,Tsql,Sql Server,将几个存储过程从MySQL转换为Microsoft SQL server。除了一个使用MySQLSHA1()函数的过程之外,一切都进行得很顺利。在MS-SQL中,我似乎找不到与此等效的 有人知道MS-SQL上的SHA1()的有效等价物吗?SQL Server 2005和更高版本具有该功能。来自google groups-我不相信有本地支持,但您可能想查看一下 您可能还想签出,您应该能够修改它以生成您想要的任何内容。尽管可能需要一些c#编码。如果您希望获得与MySQL生成的SHA1哈希完全相同的S

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


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

SQL Server 2005和更高版本具有该功能。

来自google groups-

我不相信有本地支持,但您可能想查看一下


您可能还想签出,您应该能够修改它以生成您想要的任何内容。尽管可能需要一些c#编码。

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

SELECT sys.fn_varbintohexsubstring(0, HashBytes('SHA1', 'password'), 1, 0)
有关更多详细信息,请参阅。

MSSQL服务器

HASHBYTES('SHA1', CAST('abcd@#' as nvarchar(max)))
CONVERT(VARCHAR(MAX), HASHBYTES('SHA1', CAST('abcd@#' as nvarchar(max))) , 2)

/* result */
0x77DD873DBAB2D81786AB9AE6EA91B1F59980E48C  
77DD873DBAB2D81786AB9AE6EA91B1F59980E48C
C#


“看起来很完美,”我一边小便一边回答。我爱你。谢谢现在,如果他们只支持256位的algo而不是160位的algo,如果这是用于密码存储,那么我不得不提到,在大多数情况下,简单地对原始字符串进行散列是不够的。原因如下:。。。在许多其他方面中。。。有很多彩虹表在那里,因为它,现在撤销一个未加盐的密码是非常简单的。
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"