獲取 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有什麼區別?
摘自