python-26 hashlib 模組
阿新 • • 發佈:2019-01-13
1. 介紹hashlib
hashlib 是一個提供了一些流行的hash演算法的 Python 標準庫.其中所包括的演算法有 md5, sha1, sha224, sha256, sha384, sha512. 另外,模組中所定義的 new(name, string=”) 方法可通過指定系統所支援的hash演算法來構造相應的hash物件.
常用的屬性和方法:
algorithms:列出所有加密演算法('md5','sha1','sha224','sha256','sha384','sha512')
digesti_size:產生的雜湊的位元組大小
md5()/sha1():建立一個md5或者sha1加密模式的hash物件
update(arg):用字串引數來更新hash物件,如果同一個has物件重複呼叫該方法,如下:m.update(a); m.update(b),則等於m.update(a+b)
digest():返回摘要,作為二進位制資料字串值
hexdigest():返回摘要,作為十六進位制資料字串值
copy():複製
2. hashlib的使用
import hashlib s='hello'.encode('utf8') # 字串儲存或傳輸時需要變成位元組流(bytes,或二進位制文字),通過encode(編碼)方法實現, 編碼方式可選,一般用utf-8編碼 ss=bytes('View Codehello',encoding='utf8') #也可以通過bytes方法,直接轉化 print(type(s),s,s.decode('utf8')) #-------方法一: obj=hashlib.md5() obj.update('hello'.encode('utf8')) print(obj.hexdigest()) #生成32位16進位制數字 #------方法二: obj=hashlib.md5('hello'.encode('utf8')) #方法二是方法一的簡寫形式,可以不用呼叫update()函式 print(obj.hexdigest()) #--------方法三obj=hashlib.md5('zzg'.encode('utf8')) #引數表示加鹽,也要轉化為bytes型別,也可以不加鹽 obj.update('hello'.encode('utf8')) print(obj.hexdigest()) #--------方法四 obb=hashlib.md5() obb.update('zzg'.encode('utf8')) obb.update('hello'.encode('utf8')) print(obb.hexdigest()) #分別進行2次update,相當於2段字串拼接在一起進行1次update #--------方法五 obf=hashlib.md5() # obf=hashlib.md5('zzghello'.encode('utf8')) 可以將2步合為1步 obf.update('zzghello'.encode('utf8')) #與加鹽效果一樣,加鹽實質就是字串拼接,3種方法實為1種方法,效果一樣 print(obf.hexdigest())