hashlib 模組用來進行hash
阿新 • • 發佈:2018-11-10
hashlib的基本概述:
python中的 hashlib 模組用來進行hash 或者md5加密,而且這種加密是不可逆的,所以這種演算法又被稱為摘要演算法,
其支援Opennssl庫提供的所有演算法,包括 md5、sha1、sha224、sha256、sha512 等。
hash是一種演算法 是將一個任意長的資料 根據計算 得到一個固定長度特徵嗎
特徵:1、不同輸入 可能會有相同的結果 機率特別小
2、相同的輸入 必然得到相同結果
3、由於雜湊(特徵)的性質 從原理來看是不可能 反解
4、用來 驗證 兩個輸入的資料是否一致
使用場景:
1、密碼驗證
2、驗證資料是否被篡改 比如遊戲安裝包 有沒有被改過
為了防止別人撞庫成功 可用提升密碼的複雜度 其次可以為密碼加鹽(加點內容進去)
ps:撞庫破解的原理 把常見的 明文和密文的對應關係 存到了資料庫中 運氣好就能查詢到
常用的屬性和方法:
algorithms : 列出所有加密演算法
digesti——size: 產生的雜湊的位元組大小
md5()/sha1() :建立一個 md5 或者 sha1加密模式的hash 物件
update(arg) :用字串引數來更新hash物件,如果同一個has物件重複呼叫該方法,如下:m.update(a); m.update(b), 則等於m.update(a+b)
digest() : 返回摘要,作為二進位制資料字串值
hexdigest() : 返回摘要,作為十六進位制資料字串值
copy() :複製
下面是一個簡單的加密例項:
import hashlib m = hashlib.md5("aaa".encode("utf-8")) print(m.hexdigest())
結果如下:
47bce5c74f589f4867dbd57e9ca9f808
下面是一個簡單的加鹽例項:
import hashlib m = hashlib.md5("321".encode("utf-8")) #加 m.update("abcdefplkjoujhh".encode("utf-8")) print(m.hexdigest())
結果如下:
7da0befdd8fd811dd0716941c38c0111
關於hmac 的例項:
import hmac # 沒啥區別 只是在建立的時候必須加鹽 h = hmac.new("abcdefjjjj".encode("utf-8")) h.update("123".encode("utf-8")) print(h.hexdigest())
結果如下:
944b3523fac69f32f6d399a11707da8b