MySQL中使用MD5加密的實現

什麼是MD5?

MD5信息摘要算法(英語:MD5 Message-Digest Agorithm),一種被廣泛使用的密碼散列函數,可以產生出一個128位(16字節)的散列值(hash value),用於確保信息傳輸完整一致。MD5由美國密碼學傢羅納德·李維斯特(Ronald LinnRivest))設計,於1992年公開,用以取代MD4算法。這套算法的程序在RFC1321標準中被加以規范。1996年後該算法被證實存在弱點,可以被加以破解,對於需要高度安全性的數據,專傢一般建議改用其他算法,如SHA-2。2004年,證實MD5算法無法防止碰撞(collision),因此不適用於安全性認證,如SSL公開密鑰認證或是數字簽名等用途。【以上概念引自百度百科】

MD5初體驗

在mysql中準備一個簡單的用戶表用於案例操作。

接下來測試各種sql語句:

普通插入語句(密碼明文):

-- 普通新增語句(明文密碼)
insert into user(uname,upass) values ('tom','1001');

在插入信息時加密**:**

-- 插入時使用MD5 算法加密
insert into user(uname,upass) values ('jack',MD5('1002'));

查詢查看結果:

修改: 使用MD5算法將賬號admin的密碼修改。

-- 將原密碼換為MD5加密後的密碼
update user set upass=MD5(upass) where id =1;
-- 將原密碼123456修改為 MD5加密後的密碼(666)
update user set upass=MD5('666') where id =2;

結果:

加密全部密碼:

-- 加密全部密碼
update user set upass=MD5(upass)

條件查詢,進行驗證:

-- 根據賬號密碼 查詢對應賬號信息
select * from user where uname='admin' and upass=MD5('123')

-- 測試 將密碼修改為666 的賬號信息
select * from user where uname='root' and upass=MD5('666')

以上是通過MD5算法在mysql數據庫中對一些信息的簡單加密,具體知識有待整理。

MySQL中其他方式

(1) PASSWORD()函數:

-- password() 函數加密
update userinfo set password =password('333') where id=6
-- 查詢驗證
select * from userinfo where password=password('333')

password(str)從原明文密碼str計算並返回加密後的密碼字符串,當參數為null時,返回null。password加密是單向的,不可逆。

(2) ENCODE()函數

ENCODE(str,pass_str)函數用於對純文本字符串進行編碼,在編碼後返回二進制字符串.

使用pswd_str作為密碼,加密str.

str:它用於指定要編碼的純文本

pass_str:用於指定密碼字符串以對純文本字符串進行編碼.

-- 字符串
select encode('hello','nice') 

-- 字符串和數字
select encode('nihao666','nice')

(3) DECODE(crypt_str,pass_str)

使用pswd_str作為密碼,解密加密字符串crypt_str,crypt_str是由encode()返回的字符串。

select DECODE('nihao666','nice')

-- 使用decode函數解密encode加密的字符串
select DECODE(ENCODE('nihao666','nice'),'nice');

到此這篇關於MySQL中使用MD5加密的實現的文章就介紹到這瞭,更多相關MySQL MD5加密內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: