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!
推薦閱讀:
- MySQL的加密解密的幾種方式(小結)
- 關於MySQL中的 like操作符詳情
- 基於MySql驗證的vsftpd虛擬用戶
- MySQL之select、distinct、limit的使用
- MySQL中order by的使用詳情