在python中可以使用hashlib這個庫來使用md5加密:
import hashlib
在使用md5加密的使用要注意加密內容的編碼格式:
import hashlib //匯入hash庫函式
md5_object = hashlib.md5() //建立乙個md5物件
md5_object.update(b'admin') //新增去要加密的文字
md5_result = md5_object.hexdigest() //獲取加密結果
如果文字是中文的話,需要進行編碼編碼,可以轉為utf-8、gbk、gb2312、gb18030,不分大小寫,因為gbk/gb2312/gb18030均是針對漢字的編碼,所以md5加密後結果一樣。
md5_object = hashlib.md5()
md5_object.update('admin'.encode(encoding='utf-8'))
md5_result = md5_object.hexdigest()
print(md5_result)
檢視原始碼的解釋:
如果想要多次加密,一不小心加密結果和自己預期的不一樣,例如,第一次加密後,想對第一次加密結果再次加密,然後對第二次結果再次加密,然後將第三次結果作為最終加密結果。
text = 'admin'
md5 = hashlib.md5()
md5.update(text.encode('utf-8'))
first_md5 = md5.hexdigest()
md5.update(first_md5.encode('utf-8'))
second_md5 = md5.hexdigest()
md5.update(second_md5.encode('utf-8'))
last_md5 = md5.hexdigest()
程式結果:
first_md5: '21232f297a57a5a743894a0e4a801fc3' // 結果沒錯
second_md5: 'c0e024d9200b5705bc4804722636378a' // 結果錯誤
last_md5: '8c3bf9f4ae60758c70c0db64c6d247a8' // 結果錯誤
正確結果:
first_md5: '21232f297a57a5a743894a0e4a801fc3'
second_md5: 'c3284d0f94606de1fd2af172aba15bf3'
last_md5: '77e2edcc9b40441200e31dc57dbb8829'
其實仔細一看很容易理解,我們上面加密都是使用同一md5物件,其實就是第一次update,md5物件就會將加密資料存起來,然後通過hexdigest方法加密,第二次使用update,這時候是將已經存起來的加密資料和第二次update的加密資料進行相加,然後將相加後的結果進行加密,以此類推,之後的加密過程都是這樣,這也解釋了為什麼和預期的加密結果不一樣。
如果想要和預期結果一樣,我們只需要每次加密就新建乙個md5物件。
text = 'admin'
for i in range(3):
md5 = hashlib.md5()
md5.update(text.encode(encoding='utf-8'))
md5_result = md5.hexdigest()
text = md5_result
print(md5_result)
tip:
我們可以使用sql來獲取md5加密,例如:
Python md5加密演算法
coding utf 8 import hashlib import time def md5 user md5 加密token ctime str time.time m hashlib.md5 bytes user,encoding utf 8 md5接收位元組型別資料,中文先用utf 8加密 ...
pythonmd5加密原理 MD5加密原理
md5 加密c zz 1.來歷 md5的全稱是 message digest algorithm 5 資訊摘要演算法,在 年代初由 mit laboratory for computer science 和rsa data security inc 的ronald l.rivest 開發出來,經md...
python md5 請求 構造
md5加密的方法 import hashlib m hashlib.md5 建立md5物件 m.update new temp 生成加密字串,其中temp是已拼接好的字串 按字母大小拼接可以用函式sorted見 讓字典 按值大小排序的方法 sign m.hexdigest 獲取加密後的字串 prin...