Answers:
我在其他地方找到了解决方案:
SELECT SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'HelloWorld')), 3, 32)
SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', 'Hello World'),2)
使用master.dbo.fn_varbintohexsubstring(0, HashBytes('SHA1', @input), 1, 0)
代替,master.dbo.fn_varbintohexstr
然后substringing
使用结果。
实际上是内部fn_varbintohexstr
调用fn_varbintohexsubstring
。第一个参数fn_varbintohexsubstring
告诉它是否添加0xF
为前缀。以内部参数作为第一个参数进行fn_varbintohexstr
调用。fn_varbintohexsubstring
1
因为不需要0xF
,请fn_varbintohexsubstring
直接致电。
与David Knight所说的相反,这两种选择在MS SQL 2008中返回相同的响应:
SELECT CONVERT(VARCHAR(32),HashBytes('MD5', 'Hello World'),2)
SELECT UPPER(master.dbo.fn_varbintohexsubstring(0, HashBytes('MD5', 'Hello World'), 1, 0))
因此,从2008版开始,第一个似乎是一个更好的选择。