标签:des style blog http ar io color os 使用
该模块实现了诸多安全哈希和消息摘要算法的通用接口,包括 FIPS 安全哈希算法: SHA1, SHA224, SHA256, SHA384 和 SHA512 算法(在 FIPS 180-2 中定义),还有 RSA 的 MD5 算法(在 RFC 1321 中定义)。“安全哈希” 和 “消息摘要” 是等价的,旧的算法被称为消息摘要,新的术语则称其为安全哈希。
* adler32 和 crc32 算法在 zlib 模块中。
* 某些算法存在已知的哈希冲突漏洞,请参考“六、另见”。
目录
每一类哈希算法对应一个构造器,调用这些构造器会返回具有相同接口的 hash 对象。
该模块一定支持的构造器或哈希算法有: md5(),sha1(),sha224(),sha256(),sha384() 和 sha512(),其他的算法则要看 Python 在你的平台上依赖的 OpenSSL 库的支持情况。
如调用 hashlib.sha1() 来创建一个基于 SHA1 算法的 hash 对象,然后就可以用 update() 方法为其填充任意的字符串。在任意时刻都可以用 digest() 或 hexdigest() 对这个对象中已有字符串的连接求摘要。
例如:
获取‘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‘ >>> m.digest_size 16 >>> m.block_size 64
可以用更为简要的方式:
>>> hashlib.sha224("Nobody inspects the spammish repetition").hexdigest() ‘a4337bc45a8fc544c03f52dc550cd6e1e87021bc896588bd79e901e2‘
一个通用的 new() 构造器也可以用来生成 hash 对象,这个构造器的第一个参数是算法的名称,这时的作用等同于具体算法对应的专用构造器。不过特定算法专用的构造器更快,应该优先使用它们。
例如:
>>> h = hashlib.new(‘ripemd160‘) >>> h.update("Nobody inspects the spammish repetition") >>> h.hexdigest() ‘cc4a5ce1b3df48aec5d22d1f16b894a0b894eccc‘
>>> import hashlib, binascii >>> dk = hashlib.pbkdf2_hmac(‘sha256‘, b‘password‘, b‘salt‘, 100000) >>> binascii.hexlify(dk) b‘0394a2ede332c9a13eb82e9b24631604c31df978b4e2f0fbd2c549944f9d79a5‘
*注意:
pbkdf2_hmac 的一个快速实现版本可以使用OpenSSL, Python 的实现使用了行内的 hmac 版本。这样更慢,耗时大概是前者的三倍,不会释放GIL。
标签:des style blog http ar io color os 使用
原文地址:http://www.cnblogs.com/Security-Darren/p/4169423.html