一、hashlib
1、hashlib是個專門提供hash算法的庫,代替了md5模塊和sha模塊,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法。
2、hashlib是涉及安全散列和消息摘要,提供多個不同的加密算法接口
3、在python3中已經廢棄了md5和sha模塊。
4、摘要算法又稱爲哈希算法,散列算法。它通過一個函數,把任意長度的數據轉換爲一個長度固定的數據串(通常用16進制的字符串表示)用於加密相關的操作。
1. md5加密
import hashlib
hash = hashlib.md5()
hash.update('hashlib'.encode('utf-8'))
print(hash.hexdigest())
結果:
011b172c1b0410b994a7324a2406b262
2. sha1加密
import hashlib
hash = hashlib.sha1()
hash.update('hashlib'.encode('utf-8'))
print(hash.hexdigest())
結果:
7616ac97eb53486b908d0e024ea30fa4e321fa1b
3. sha256加密
import hashlib
hash = hashlib.sha256()
hash.update('hashlib'.encode('utf-8'))
print(hash.hexdigest())
結果:
2dfc7fde14154f53fa303391a439b00ec6284c2831b9a465b83f7372cb962cc9
4. sha384加密
import hashlib
hash = hashlib.sha384()
hash.update('hashlib'.encode('utf-8'))
print(hash.hexdigest())
結果:
d850c09e36b98a1ea123241cce4a73d6b6b461a6c7a83829267a55070c3947e4abb154dbb17e3f4b1c2ee5aab471a2b3
5. sha512加密
import hashlib
hash = hashlib.sha512()
hash.update('hashlib'.encode('utf-8'))
print(hash.hexdigest())
結果:
43483f7a42fa349e421a072a1af3f578be6b194122103a87cc2e2352503b1025b047f5f791a3ad0895a642e9d84a0707a0a12a302d9bb7e5d91ac2027e748ad1
6. ‘加鹽’加密
以上加密算法雖然很厲害,但仍然存在缺陷,通過撞庫可以反解。所以必要對加密算法中添加自定義key(統稱爲“鹽”)再來做加密。
import hashlib
hash = hashlib.md5('python'.encode('utf-8'))
hash.update('hashlib'.encode('utf-8'))
print(hash.hexdigest())
結果:
377f64c42b532c45aeb9aefaab0b81c4
二、hmac
hmac內部對我們創建的key和內容進行處理後在加密
先把數據存儲到字典中,然後再進行加密
import hmac
h = hmac.new('python'.encode('utf-8'))
h.update('helloworld'.encode('utf-8'))
print(h.hexdigest())
結果:
b3b867248bb4cace835b59562c39fd55