在SQL Server 2005下自带的函数HashBytes() ,此函数是微软在SQL Server 2005中提供的,HashBytes() 函数的返回结果是VarBinary类型(以 0x 开头 16 进制形式的二进制数据)。通常情况下,我们需要的都是字符串型的数据,直接存入varchar字段类型的列或者nvarchar的列,就会出现乱码,需要类型转化
--MD5加密
--HashBytes ('加密方式', '待加密的值')
--加密方式= MD2 | MD4 | MD5 | SHA | SHA1
--返回值类型:varbinary(maximum 8000 bytes)
select HashBytes('MD5','123456')
--HashBytes生成的结果为:0xE10ADC3949BA59ABBE56E057F20F883E
--一般工具生成的都是没有0x和是小写的,16进制的数值,去掉“0x”转换为小写值就完全与MD5值吻合了,
--在此需要用另一个函数(sys.fn_sqlvarbasetostr)把varbinary的值转换为varchar类型的,
select sys.fn_sqlvarbasetostr(HashBytes('MD5','123456'))
--结果:0xe10adc3949ba59abbe56e057f20f883e 截取去掉0x
select substring(sys.fn_sqlvarbasetostr(HashBytes('MD5','123456')),3,32)
--结果就是完整的MD5值:e10adc3949ba59abbe56e057f20f883e
--MD5加密
--HashBytes ('加密方式', '待加密的值')
--加密方式= MD2 | MD4 | MD5 | SHA | SHA1
--返回值类型:varbinary(maximum 8000 bytes)
select HashBytes('MD5','123456')
--HashBytes生成的结果为:0xE10ADC3949BA59ABBE56E057F20F883E
--一般工具生成的都是没有0x和是小写的,16进制的数值,去掉“0x”转换为小写值就完全与MD5值吻合了,
--在此需要用另一个函数(sys.fn_sqlvarbasetostr)把varbinary的值转换为varchar类型的,
select sys.fn_sqlvarbasetostr(HashBytes('MD5','123456'))
--结果:0xe10adc3949ba59abbe56e057f20f883e 截取去掉0x
select substring(sys.fn_sqlvarbasetostr(HashBytes('MD5','123456')),3,32)
--结果就是完整的MD5值:e10adc3949ba59abbe56e057f20f883e