首頁 > 軟體

MySQL中使用MD5加密的實現

2022-08-03 14:08:02

什麼是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加密內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com