select convert(varchar(128), HASHBYTES('MD5', 'abcde212312'), 2)
select substring(sys.fn_VarBinToHexStr(HASHBYTES('MD5' , 'abcde212312')),3,200)
输入参数的数据类型为 varchar、nvarchar 或 varbinary,输入参数的字节数量不能超过8000bytes.
HashBytes函数的返回值的数据类型是 varbinary ,不同的算法返回的字节长度是不同的。
hashbytes函数功能为:返回一个字符,
通过 MD2、MD4、MD5、SHA、SHA1、SHA2_256、SHA2_512方式加密后的返回值
hashbytes(‘参数1’,’参数2’)
参数1:
输入加密类型 例:MD5
参数2:
输入待加密的字符串(加密字符串最大值为 8000字节)
返回值:
返回值最大为8000字节
注意事项:
当输入加密类型,异常时,返回NULL
二,影响HashBytes函数的因素
1,HashBytes函数受Data Type 的影响
select HASHBYTES('SHA1',N'123abc') as HashNChar, HASHBYTES('SHA1','123abc') as HashChar;
2,HashBytes函数受字符大小写的影响
select hashbytes('SHA1','eric') as UpperCase,hashbytes('SHA1','Eric') as LowerCase
3,输入字符串的大小不能超过8000Bytes,如果输入字符串的字节数量大于8000Bytes,那么HashBytes 会将超过8000Bytes的字符舍弃,只对前8000Bytes进行Hash计算。SQL Server 不会提供任何提示或warning,在使用时,必须保证,输入字符串的字节数量不能超过8000。
如果是Unicode字符,那么输入字符串字符数量不能超过4000个;如果是varchar字符,那么输入字符串的数量不能超过8000个。
select hashbytes('SHA1',replicate('eric',2000)) ,hashbytes('SHA1',replicate('eric',4000))