mysql中怎么生成md5值_如何在SQL Server 2008中生成字符串的MD5值

现需要直接使用SQL Server 2008的函数生成某个字符串的MD5值。2005以上的版本,使用HASHBYTES这个函数,用法如下:

select HASHBYTES('MD5','this is a very long text');

但是,得到的结果和PHP函数的md5值有所不同——前面多了一个“0x“,需要去除。

select SUBSTRING(sys.fn_sqlvarbasetostr(HASHBYTES('MD5','this is a very long text')),3,32)

fn_sqlvarbasetostr是SQL SERVER系统的一个函数,之所以使用它是因为通过HASHBYTES得到的别不是一个字符串型的值,而是一个十六进制的。那么直接使用SUBSTRING会变成另外的字符串。所以必须先将HASHBYTES得到的值转换成纯文本型 ,再使用SUBSTRING截取。

其实你直接吧32位的MD5取中间16位(第9个字符到第24个字符之间)就成16位MD5了(好像用数据库自带的SQL语句就能完成)。。

所以只需要把32位的转成16位,然后和16位的那个网站的用户数据合并起来就可以了。。

原文参考:http://redfinsolutions.com/blog/replicate-mysqls-md5-function-sql-server-2005-using-hashbytes

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值