Python之hashlib模塊md5加密
阿新 • • 發佈:2017-11-13
名稱 數字 長度 arch tro blog asc odin 數據指紋
來源:
- https://www.cnblogs.com/UnGeek/archive/2013/03/30/2990876.html
- https://www.cnblogs.com/weiman3389/p/6056305.html
- https://www.cnblogs.com/yyds/p/7072492.html
- 加鹽——https://www.zhihu.com/question/20299384
一、基礎使用
1 import hashlib 2 inp = input(‘輸入:>>‘) 3 4 #創建一個md5加密對象 5 hash = hashlib.md5() 6 #生成md5加密字符串 7 hash.update(bytes(inp,encoding=‘使用hashlibutf-8‘)) 8 #把md5加密好的字符串打印出來 9 print(hash.hexdigest())
- hash.update(data)
- 更新哈希對象所要計算的數據,多次調用為累加效果
- 如 m.update(a) ; m.update(b) 等價於 m.update(a+b)
- hash.hexdigest()
- 返回傳遞給update()函數的所有數據的摘要信息(又稱 數據指紋)
- 十六進制格式的字符串
- hash.digest()
- 返回傳遞給update()函數的所有數據的摘要信息
- 二進制格式的字符串
二、hashlib模塊使用步驟
- 1、獲取一個哈希算法對應的哈希對象
- hashlib.new(哈希算法名稱, 初始出入信息)
- 獲取這個哈希對象,如hashlib.new(‘MD5‘,‘Hello‘),hashlib.new(‘SHA1‘,‘Hello‘)
- hashlib.哈希算法名稱()
- 獲取這個哈希對象,如hashlib.md5(),hashlib.sha1()
- hashlib.new(哈希算法名稱, 初始出入信息)
- 2、設置/追加輸入信息
- 調用已得到哈希對象的 update(輸入信息) 方法可以設置或追加輸入信息,多次調用該方法,等價於 把每次傳遞的參數憑借後進行作為一個參數墊底給update()方法。
- 多次調用為累加,不是覆蓋,見hash.update()
- 3、獲取輸入信息對應的摘要
- 調用已得到的哈希對象的 digest() 方法或 hexdigest() 方法即可得到傳遞給update()方法的字符串參數的摘要信息。
- digest()方法返回的摘要信息是一個二進制格式的字符串,其中可能包含非ASCII字符、NULL字節,該字符串長度可以通過哈希對象的 hash.disgest_size 屬性獲取
- hexdigest()方法返回的摘要信息是一個十六進制格式的字符串,該字符串中只包含十六進制的數字,且長度比digest()返回結果長度的2倍,這可以用於郵件的安全交互或其他非二進制環境中。
三、優化
1、防撞庫,使用“加鹽”加密
1 import hashlib 2 inp = input(‘輸入:>>‘) 3 #創建一個md5加密對象,並‘加鹽’加密,防撞庫反解 4 hash = hashlib.md5(‘super‘.encode(‘utf-8‘)) 5 #生成md5加密字符串 6 hash.update(bytes(inp,encoding=‘utf-8‘)) 7 #把md5加密好的字符串打印出來 8 print(hash.hexdigest())“加鹽”
2、一句
1 hash = hashlib.md5(inp.encode(‘utf-8‘)).hexdigest()一句
Python之hashlib模塊md5加密