概述
hashlib提供了常見的摘要演算法,如md5、sha1等等
摘要演算法:又稱為雜湊演算法、雜湊演算法。它通過乙個函式,把任意長度的資料轉換為乙個長度固定的資料串(通常用16進製制的字串表示)
(1)md5()/sha1():建立乙個md5或者sha1加密模式的hash物件
(2)update(arg):用字串引數來更新hash物件,如果同乙個hash物件重複呼叫該方法
如:m.update(a);m.update(b) 則等於 m.update(a+b)
(3)digest():返回摘要,作為二進位制資料字串值
(4)hexdigest():返回摘要,作為十六進製制資料字串值
(5)copy():複製
algorithms:列出所有加密演算法
digest_size:產生雜湊的位元組大小
計算出乙個字串的md5值
①**
import hashlib
md5_ = hashlib.md5() # 建立乙個md5物件(md5_)
md5_1 = hashlib.md5() # 建立乙個md5物件(md5_1)
md5_2 = hashlib.md5() # 建立乙個md5物件(md5_2)
md5_.update("suner yao hao hao xue xi".encode())
print("md5_的字串值:", md5_.hexdigest())
md5_1.update("123456".encode())
print("md5_1的字串值:", md5_1.hexdigest())
# 資料量很大,可以分塊多次呼叫update()
md5_2.update("suner".encode())
md5_2.update("hao hao xue xi".encode())
print("md5_2的字串值:", md5_2.hexdigest())
②結果
計算出乙個字串的sha1值,與md5一致
①**
import hashlib
sha1_= hashlib.sha1() # 建立乙個sha1物件(sha1_)
sha1_1 = hashlib.sha1() # 建立乙個sha1物件(sha1_1)
sha1_2 = hashlib.sha1() # 建立乙個sha1物件(sha1_2)
sha1_.update("suner yao hao hao xue xi".encode())
print("sha1_的字串值:", sha1_.hexdigest())
sha1_1.update("123456".encode())
print("sha1_1的字串值:", sha1_1.hexdigest())
# 資料量很大,可以分塊多次呼叫update()
sha1_2.update("suner".encode())
sha1_2.update("hao hao xue xi".encode())
print("sha1_2的字串值:", sha1_2.hexdigest())
②結果
比sha1更安全的演算法是sha256和sha512,不過越安全的演算法越慢,而且摘要長度更長。
應用場景(常用例子)
任何允許使用者登入的**都會儲存使用者登入的使用者名稱和口令。方法是存放資料庫表中
口令(比如密碼)如果以銘文儲存,一旦資料庫洩露,資訊就全部洩露了
使用者登入示例
(1)**
import hashlib
user_info =
class user_login():
def __init__(self,name,password):
self.name = name
self.password = password
def login(self):
md5_ = hashlib.md5() # 建立乙個md5物件
md5_.update(self.password.encode("utf-8"))
password = md5_.hexdigest() # 轉為字串顯示
if self.name == user_info["name"] and user_info["password"] == password: # 判斷使用者名稱和密碼都正確才算成功
print("登入成功")
else:
print("密碼或賬號有誤")
if __name__ == '__main__':
name = input("請輸入使用者名稱:")
password = input("請輸入密碼:")
user_login = user_login(name, password)
user_login.login()
(2)結果
python學習筆記5 加密模組hashlib
import hashlib md5 ybm pwd yuanbapqingsdfs234ff234hf f m hashlib.md5 bytes ybq ybm pwd.encode 把字串轉成bytes型別 m.update bytes ybq 加密,不能字串,只能傳bytes型別,二進位制 ...
Python系列教程33
宣告 在人工智慧技術教學期間,不少學生向我提一些python相關的問題,所以為了讓同學們掌握更多擴充套件知識更好的理解人工智慧技術,我讓助理負責分享這套python系列教程,希望能幫到大家!由於這套python教程不是要由所寫,所以不如我的人工智慧技術教學風趣幽默,學起來比較枯燥 但它的知識點還是講...
零基礎學python 3 3 識別符號
1.識別符號的組成 1 有數字 下劃線 英文本母組成 2 第乙個字元僅僅能是字母或者下劃線 3 大寫和小寫敏感 識別符號通常是變數名稱 方法名 類名等 2.keyword python裡面有一系列的關鍵字,假設你不清楚某個單詞是不是,你能夠用iskeyword 這種方法測試一下 3.內建 1 可當作...