python模組——hashlib
- 2020 年 1 月 7 日
- 筆記
hashlib模組是對許多hash函數的一個公共介面 new(name, string = '') 執行給定的hash函數來返回一個新的hash對象,使用給定的字元串數據初始化hash對象。如:
>>> import hashlib >>> hashlib.new('md5', string='abc').hexdigest() #hexdigest() 使加密後的結果以十六進位顯示 '900150983cd24fb0d6963f7d28e17f72'
一些別的hash函數可用來代替new(),並且速度比new()函數快的多,常用的函數有: md5(), sha1(), sha224(), sha356(), sha384(), sha512() 提示:如果要用adler31()和crc32 hash函數,它們在zlib模組中可用。明智的選擇hash函數,一些常見的錯誤如sha384和sha512在32位的平台上速度有些慢。
hash對象有以下常用方法:
- update(arg): 使用string arg更新hash對象。多次調用update和使用串聯的參數一次調用update是等價的 - digest(): 返回二進位字元串 - hexdigest(): 返回十六進位字元串 - copy(): 返回hash對象的一個克隆,這可用於高效的計算共享一個相同初始子字元串的digests字元串。
下面例子,將會得到字元串'Nobody inspects the spammish repetition'的加密結果:
>>> import hashlib >>> m = hashlib.md5() #創建一個加密對象 >>> m.update("Nobody inspects") #更新字元串 >>> m.update(" the spammish repetition") >>> m.digest() #顯示加密後的結果 'xbbdx9cx83xddx1exa5xc9xd9xdexc9xa1x8dxf0xffxe9'
可以將多個函數在一行中使用:
>>> hashlib.md5("Nobody inspects the spammish repetition").digest() 'xbbdx9cx83xddx1exa5xc9xd9xdexc9xa1x8dxf0xffxe9'
關於對象一些方法:
object.digest_size 結果hash的大小
object.block_size hash內部塊的大小
>>> import hashlib >>> m.update("Nobody inspects") >>> m.digest_size 16L >>> m.block_size 64L >>>