hashlib 模塊用來進行hash
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
hashlib 模塊用來進行hash