python加密模塊-hashlib模塊

hashlib模塊

用於加密相關的操作,3.X裏代替了md5模塊和sha模塊,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法
(sha比md5 更復雜、md5 不能反解)

具體應用:用於網站防篡改。具體方法:監控網站被篡改,定時的去wget 去下載,然後md5比對 ,檢查網站是否被篡改。

如何驗證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())

hmac模塊

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 hmac

#設置密碼和消息 進行加密
h = hmac.new("哈哈哈".encode(encoding="utf-8"),"你好".encode(encoding="utf-8"))

#打印加密後的字符
print(h.hexdigest())

更多關於md5,sha1,sha256等介紹的文章看這裏https://www.tbs-certificates.co.uk/FAQ/en/sha256.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章