将几个存储过程从MySQL转换到Microsoft SQL Server。一切都很顺利,但是有一个存储过程使用了MySQL的SHA1()
函数。我无法找到在MS-SQL中等效的替代品。
有人知道在MS-SQL中SHA1()
的有效替代品吗?
将几个存储过程从MySQL转换到Microsoft SQL Server。一切都很顺利,但是有一个存储过程使用了MySQL的SHA1()
函数。我无法找到在MS-SQL中等效的替代品。
有人知道在MS-SQL中SHA1()
的有效替代品吗?
SQL Server 2005及更高版本拥有HashBytes()函数。
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
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"
CONVERT
函数的二进制样式2
返回的是没有0x
的VARCHAR类型。 - undefined您可能还想查看http://www.stev.org/post/2011/01/30/MS-SQL-SHASum-Support.aspx,您应该能够修改它以产生任何您想要的内容。虽然这可能需要一些C#编程。
我不相信有本地支持,但你可能想要检查一下这个...