hashlib 摘要算法 -SHA1
Python 的 hashlib 提供了常见的摘要算法,如 MD5,SHA1 等等。
MD5 已经做过一篇帖子。
摘要算法另一种常用的 SHA1,
SHA-1 与 MD5 的比较
对密码分析的安全性:由于 MD5 的设计,易受密码分析的攻击,SHA-1 显得不易受这样的攻击。
速度:在相同的硬件上,SHA-1 的运行速度比 MD5 慢。
对强行攻击的安全性:最显著和最重要的区别是 SHA-1 摘要比 MD5 摘要长 32 位, 这样,SHA-1 对强行攻击有更大的强度。
调用 SHA1 和调用 MD5 完全类似:
import hashlib
sha1 = hashlib.sha1()
sha1.update(’how to use sha1 in ’.encode(‘utf-8’))
sha1.update(‘python hashlib?’.encode(‘utf-8’))
print(sha1.hexdigest())
SHA1 的结果是 160 bit 字节,通常用一个 40 位的 16 进制字符串表示。
比 SHA1 更安全的算法是 SHA256 和 SHA512,不过越安全的算法不仅越慢,而且摘要长度更长。
有没有可能两个不同的数据通过某个摘要算法得到了相同的摘要?完全有可能,因为任何摘要算法都是把无限多的数据集合映射到一个有限的集合中。这种情况称为碰撞,比如 Bob 试图根据你的摘要反推出一篇文章’how to learn hashlib in python - by Bob’,并且这篇文章的摘要恰好和你的文章完全一致,这种情况也并非不可能出现,但是非常非常困难。