分享

如何在SQL Server 2008中生成字符串的MD5值

 北海藏经阁 2012-06-08

如何在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:///blog/replicate-mysqls-md5-function-sql-server-2005-using-hashbytes

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多