Python基礎 33 hashlib模組

2021-09-11 16:18:50 字數 2786 閱讀 2914

概述

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 可當作...