用於加密相關的操作,3.x裡代替了md5模組和sha模組,主要提供sha1,sha224,sha256,sha384,sha512,md5演算法
(sha比md5 更複雜、md5 不能反解)
具體使用方法:以下是六種加密方法一一示例:#匯入模組
import hashlib
生成乙個加密的物件並複製給變數
m = hashlib.md5()
給物件輸入加密bytes字元型別
m.update(b"hello")
m.update(b"it's me")
列印加密後的md5值,輸出二進位制hash
print(m.digest())
列印加密後的md5值,輸出十六進製制格式hash
print(m.hexdigest())
檢視十六進製制格式hash的長度為32
print(len(m.hexdigest()))
# sha1加密
sha = hashlib.sha1()
sha.update("管理員".encode(encoding="utf-8"))
print(sha.hexdigest())
# sha224加密
sha224 = hashlib.sha224()
sha224.update(b"admin")
print(sha224.hexdigest())
# sha256加密
sha256 = hashlib.sha256()
sha256.update(b"admin")
print(sha256.hexdigest())
# sha384加密
sha384 = hashlib.sha384()
sha384.update(b"admin")
print(sha384.hexdigest())
# sha512加密
sha512 = hashlib.sha512()
sha512.update(b"admin")
print(sha512.hexdigest())
# md5加密
md5 = hashlib.md5()
md5.update(b"admin")
print(md5.hexdigest())
python還有乙個hmac模組,它內部對我們建立key和內容 再進行處理 再加密!
雜湊訊息鑑別碼,簡稱hmac,是一種基於訊息鑑別碼mac(message authentication code)的鑑別機制。使用hmac時,訊息通訊的雙方,通過驗證訊息中加入的鑑別金鑰k來鑑別訊息的真偽;
一般用於網路通訊中訊息加密,前提是雙方先要約定好key,就像接頭暗號一樣,然後訊息傳送,用key把訊息加密,接收方用key + 訊息明文再加密,拿加密後的值 跟 傳送者的相對比是否相等,這樣就能驗證訊息的真實性,及傳送者的合法性了。
演算法表示:
演算法公式 : hmac(k,m)=h(k⊕opad∣h(k⊕ipad∣m))[1]
h 代表所採用的hash演算法(如sha-256)
k 代表認證密碼
ko 代表hash演算法的密文
m 代表乙個訊息輸入
b 代表h中所處理的塊大小,這個大小是處理塊大小,而不是輸出hash的大小
如,sha-1和sha-256 b = 64
sha-384和sha-512 b = 128
l 表示hash的大小
opad 用0x5c重複b次
ipad 用0x36重複b次
apad 用0x878fe1f3重複(l/4)次
認證流程
(1) 先由客戶端向伺服器發出乙個驗證請求。
(2) 伺服器接到此請求後生成乙個隨機數並通過網路傳輸給客戶端(此為挑戰)。
(3) 客戶端將收到的隨機數提供給epass,由epass使用該隨機數與儲存在epass中的金鑰進行hmac-md5運算並得到乙個結果作為認證證據傳給伺服器(此為響應)。
(4) 與此同時,伺服器也使用該隨機數與儲存在伺服器資料庫中的該客戶金鑰進行hmac-md5運算,如果伺服器的運算結果與客戶端傳回的響應結果相同,則認為客戶端是乙個合法使用者。
具體使用方法:
#匯入模組
import
#設定密碼和訊息 進行加密
new"哈哈哈"
"utf-8"
"你好"
"utf-8"
#列印加密後的字元
print
//
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 加密模組
這裡介紹hashlib模組。2 加密 hashlib模組有很多種加密方法,如hashlib.sha224 hashlib.blake2b 等,這裡以md5加密為例。加密時,不能直接對字串進行加密,需要先將字串轉化為bytes型別,用str.encode 下面是乙個完整的加密過程。將上述功能寫成下列函...
python的加密模組
使用 pycrypto 模組 使用aes的乙個範例 usr bin env python coding utf 8 from crypto.cipher import aes import struct import hashlib import random def generagekey imp...