获取 111111 的MD5值html
SELECT substring(sys.fn_sqlvarbasetostr(HashBytes('MD5','111111')),11,32)
执行结果:965eb72c92a549dd5a330112sql
可是计算方法放在 sql 里结果倒是另外一个数据库
SELECT TOP 1 [PwdSalt] + '111111' ,substring(sys.fn_sqlvarbasetostr(HashBytes('MD5', PwdSalt + '111111')),11,32) ,substring(sys.fn_sqlvarbasetostr(HashBytes('MD5', CONVERT(VARCHAR(150), (PwdSalt + '111111')))),11,32) FROM [T_User_Info] SELECT substring(sys.fn_sqlvarbasetostr(HashBytes('MD5', 'c6b7574d61d14284b2157bf79183ed33111111')),11,32)
要加密的字符串:c6b7574d61d14284b2157bf79183ed33111111post
计算结果不一样加密
第一种:5d26f71efb0442c84d66c312url
第二种:3e585296d7f2d18d74cf2a24spa
而咱们经过在线查询的结果:f915ab873e585296d7f2d18d74cf2a24code
https://md5jiami.51240.com/server
第二种是正确的htm
为何呢?
由于
第一种数据类型默认的是 nvarchar
第二种咱们转成了 varchar
通常来讲,若是含有中文字符,用nchar/nvarchar,若是纯英文和数字,用char/varchar
varchar是实际内容的长度
而nvarchar占用的所有的存储
因此计算出的结果不一样
数据库字段改为 varchar(50) 以后计算结果也一致了
参考下面的区别
sql server中的varchar和Nvarchar有什么区别?
摘自