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