1.什么是hash
hash是一種算法,該算法接受傳入的內容,經過運算得到一串hash值
1.如果把hash算法比喻為一座工廠
2.那傳給hash算法的內容就是原材料
3.生成的hash值就是生產出的產品
2.為何要用hash算法
hash值/產品有三大特性:
1.只要傳入的內容一樣,得到的hash值必然一樣
2.只要我們使用是hash算法固定,無論傳入的內容有多大,得到的hash值的長度是固定
3.不可以用hash值逆推出原來的內容
基於1和2可以在下載文件時做文件一致性校驗
基於1和3可以對密碼進行加密
import hashlib
兩種傳值方式:
1.造出hash工廠
m=hashlib.md5() #hashlib.sha512 :可以選擇不同的算法加密,不同的算法的加密結果的長度也會不一樣
2.運送原材料
m.update('你好啊’.encode('utf-8'))
3.產出hash值
print(m.hexdigest)
1.
1.造出hash工廠
m=hashlib.md5('你'.encode('utf-8'))
2.運送原材料
m.update('你好啊’.encode('utf-8'))
3.產出hash值
print(m.hexdigest)
應用一:文件一致性校驗
1.造出hash工廠
m=hashlib.md5()
2.運送原材料
with open(r'E:\01.mp4','rb') as f:
for line in f:
m.update(line)
3.產出hash值
print(m.hexdigest)
應用二:密碼加密
m=hashlib.md5()
m.update('天王蓋地虎'.encode('utf-8')) #添加個暗號,提升密碼復雜度
m.update(password.encode('utf-8'))
print(m.hexdigest())
加密模塊另一個加密模塊 hmac
import hmac
m=hmac.new('小雞燉蘑菇'.encode('utf-8')) #用法跟hash一樣的用法,但必須要傳個值,增加密碼難度性
m.update('hello'.encode('utf-8'))
print(m.hexdigest())