python模塊——hashlib
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() #顯示加密後的結果 '\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
可以將多個函數在一行中使用:
>>> hashlib.md5("Nobody inspects the spammish repetition").digest() '\xbbd\x9c\x83\xdd\x1e\xa5\xc9\xd9\xde\xc9\xa1\x8d\xf0\xff\xe9'
關於對象一些方法:
object.digest_size 結果hash的大小
object.block_size hash內部塊的大小
>>> import hashlib >>> m.update("Nobody inspects") >>> m.digest_size 16L >>> m.block_size 64L >>>