㈠ sqlserver 有沒有md5函數
Sqlserver內置函數實現MD5
16位:
SELECT substring(sys.fn_sqlvarbasetostr(HashBytes('MD5', '需要加密字元串')),3,16)
32位
SELECT substring(sys.fn_sqlvarbasetostr(HashBytes('MD5','需要加密字元串')),3,32)
㈡ 資料庫里加密的密碼是怎麼實現的
一般是先加鹽再用不可逆加密演算法加密密碼的,常見的有:sha1 sha256 md5等。
作用:這些加密演算法,只能加密,不能逆向解密,所以使用這些演算法。即時你的資料庫被拖庫,得到的人,也無法知道用戶密碼。
為什麼加鹽
舉例
在注冊時,
假設你的密碼是1234,一般伺服器會加一個鹽(隨便一個亂打的字元串),和你的密碼加在一起,1234和efnU*(@#H!JKNF得到1234efnU*(@#H!JKNF這個值,然後再進行加密(這里我用md5)得到 ,於是資料庫里你的密碼就變為了
登入時,
你輸入1234, 然後伺服器用和注冊相同的步驟進行加密,得到加密後的值,,將這個值與資料庫的加密值比對,如果正確則登入。
㈢ sqlserver 怎麼查看錶的數據是加密的
在SQl2005下自帶的函數hashbytes() ,此函數是微軟在SQL SERVER 2005中提供的,可以用來計算一個字元串的 MD5 和 SHA1 值,使用方法如下:
--獲取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加密串。