mssql sqlserver使用sql脚本实现MD5加密的方法总结分享


摘要:
下文举例讲述Md5加密的方法分享,如下所示:
实验环境:sql server 2008 R2



MD5加密方式简介

在sqlserver中MD5加密需采用HashBytes函数对数据进行加密,如下:

–函数说明:
HashBytes(‘加密方式’,’待加密字符串’)
–参数说明:
加密方式:
此处可填入: MD2、MD4、MD5、SHA、SHA1五种加密方式
–返回值说明:
此函数将返回一个varbinary类型的数据
–举例说明:
select HashBytes(‘MD5′,’maomao365.com’)
–返回值:
0xE9C0D9F00C733A9B9F62AAB09463E6B5

当使用HashBytes函数生成字符串为0x开头的16进制的二进制数据,我们可以将此数据直接放入数据表的varchar或nvarchar列中,但是在存入列中,我们必须使用convert或者sys.fn_VarBinToHexStr将二进制数据转换为字符串信息,否则会出现乱码。

例:

  declare @a varchar(60)
declare @b varchar(60)
declare @c varchar(60)
declare @d varchar(60)

select @a = HashBytes('MD5','maomao365.com')
select @b = sys.fn_VarBinToHexStr(hashbytes('MD5','maomao365.com'))
select @c = convert(varchar(60), HashBytes('MD5','maomao365.com'),2)
select @d = convert(varchar(60), HashBytes('MD5','maomao365.com'),1)

print @a    ---乱码
print @b    ---fn_VarBinToHexStr 转换后 正常输出
print @c    ---convert 转换后 正常输出不带0x
print @d    ---convert 转换后 正常输出带0x
mssql_sqlserver_md5_8440

mssql_sqlserver_md5_8440