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()    #顯示加密後的結果      '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      >>>