hashlib
提供了常用的摘要算法如 MD5
,SHA1
等等,
摘要算法又称散列算法,哈希算法。很多人把 MD5
说成是加密算法,
这是极其不准确的,md5
是散列算法,不是加密算法,
什么时候见过有人能把所谓“加密”的值解密成原文?
很多网站的密码都是经过 md5
散列处理的,为的是保护用户账号的安全,
但太多的人就是喜欢用简单的密码,比如123456,
而123456 经过 MD5
散列后的值永远是 e10adc3949ba59abbe56e057f20f883e
,
于是黑客就通过撞库,得到了用户的密码,网上一些所谓“解密” MD5
的网站,
仅仅是收集了大量的散列后的值而已,不是解密,而是撞库。
Python3 里使用 md5
MD5 (Message-Digest Algorithm 5) 是一种广泛使用的哈希函数, 可以生成 128 位(16 字节)的哈希值, 通常用 32 个字符的十六进制字符串表示。
import hashlib
string = "123456"
创建md5对象。
m = hashlib.md5()
update方法只接收bytes类型数据作为参数。
m.update(string.encode(encoding='utf-8'))
得到散列后的字符串。
str_md5 = m.hexdigest()
程序输出结果。
print('MD5散列前为 :' + string)
MD5散列前为 :123456
print('MD5散列后为 :' + str_md5)
MD5散列后为 :e10adc3949ba59abbe56e057f20f883e