加密算法
md5
、sha1
、sha256
加密是不可逆的,base64
可逆。
借助hashlib
模块,实现对明文的加密。
示例:
import hashlib
md5 = hashlib.md5()
md5.update('how to use md5 in python hashlib?'.encode('utf-8'))
print(md5.hexdigest())
哎呀,报错了
Traceback (most recent call last):
File "G:/PyCharm Community Edition 2017.1/WorkSpace/常用内建模块/hashlib.py", line 1, in <module>
import hashlib
File "G:\PyCharm Community Edition 2017.1\WorkSpace\常用内建模块\hashlib.py", line 3, in <module>
md5 = hashlib.md5()
AttributeError: module 'hashlib' has no attribute 'md5'
原因如下:
原来是python会先将当前目录下面的hashlib导入,正好我取得文件名是hashlib,也怪我太随意没有规范取名
修改文件名后,结果如下
d26a53750bc40b38b65a520292f69306
三种常用的加密算法
import hashlib
md5 = hashlib.md5()
md5.update('how to use md5 in python hashlib?'.encode('utf-8'))
print(md5.hexdigest())
sha1 = hashlib.sha1()
sha1.update('how to use sha1 in python hashlib?'.encode('utf-8'))
print(sha1.hexdigest())
sha256 = hashlib.sha3_256()
sha256.update('how to use sha256 in python hashlib?'.encode('utf-8'))
print(sha256.hexdigest())
输出结果如下:
# 32位
d26a53750bc40b38b65a520292f69306
# 40位
2c76b57293ce30acef38d98f6046927161b46a44
# 64位
0d81c6cb808870af5d3896c7c290ef380661b267f4f2274714f7bdbdf9b6ff57
可以发现,不同的加密算法的密文长度有所不同,长度越长,加密的复杂度越高,安全性越好。