摘要算法是单向加密
的,也就是说你的明文
通过摘要算法加密之后,是不能解密的。摘要算法的第二个特点密文是固定长度
的,无论你的明文长度多少,加密之后都是一样的长度。之所以叫摘要算法,它算法的就是通过提取明文重要的特征
。所以,两个不同的明文,使用了摘要算法之后,有可能出现他们的密文的一样,不过这个概率非常的低。
md5 是常见的摘要算法,不过现在单纯的 md5 加密已经很不安全,黑客通过 撞库
的方式,常见密码的 md5 值很容易就能查询得到。
>>> import hashlib
>>> md5 = hashlib.md5()
>>> md5.update('date'.encode('utf-8'))
>>> md5.hexdigest()
'ce5f6cc34fbf471fd55d186da4833805' # 得到了这串 32 位的字符,就是 'date' 的密文
sha1 是比 md5 更安全一点的摘要,md5 的密文是 32
位,而 sha1 是 40
位,sha1 的升级版还有sha256
和 sha512
,版本越强密文越长,代价是速度越慢。
>>> import hashlib
>>> sha1 = hashlib.sha1()
>>> sha1.update('date'.encode('utf-8'))
>>> sha1.hexdigest()
'e927d0677c77241b707442314346326278051dd6' # 用法和 md5 一样