python模塊——hashlib

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
    >>>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章