SQLSERVER 2005 之後的 MD5加密

在SQl2005之後下自帶的函數hashbytes() ,此函數是微軟在SQL SERVER 2005中提供的,能夠用來計算一個字符串的 MD5 和 SHA1 值,使用方法以下: sql

--獲取123456的MD5加密串
select hashbytes('MD5', '123456') ;
--獲取123456的SHA1加密串
select hashbytes('SHA1', '123456') ;
有了這個函數能夠在sqlserver中爲字符串進行加密,可是hashbytes() 函數的返回結果是 varbinary類型,
(以 0x 開頭 16 進制形式的二進制數據)一般狀況下,咱們須要的都是字符串型的數據,不少人首先想到的
可能就是用 CAST 或 Convert 函數將varbinary 轉換爲 varchar,但這樣轉換後的結果會是亂碼,正確轉換 varbinary 可變長度二進制型數據到 16 進制字符串應該使用系統內置函數 sys.fn_varbintohexstr()(只在sqlserver2005之後的有),以下所示:
select sys.fn_varbintohexstr(hashbytes('MD5', '123456'))
而後就能夠截取須要的部分
select lower(right(sys.fn_varbintohexstr(hashbytes('MD5','123456')),32))
 
爲md5加密串。
相關文章
相關標籤/搜索