一、 MD5加密
1
2
| import hashlib # Python3里的引用
# import md5 # Python2里的引用
|
- md5 是不可逆的,不能解密
- 所有语言生成的 md5 串都是一样的
- 不论字符串多长,生成的 md5 是等长的
- 彩虹表:存的所有常用的加密后的密码对应的 md5
- 解密查询,只能解密常用字符:https://www.cmd5.com/
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| import hashlib
#import md5 #Python2里的引用
s='123456'
# s.encode()#变成bytes类型才能加密
m= hashlib.md5(s.encode())
print(m.hexdigest())
m=hashlib.sha3_224(s.encode()) #长度是224
print(m.hexdigest())
m=hashlib.sha3_256(s.encode()) #长度是256
print(m.hexdigest())
m=hashlib.sha3_512(s.encode()) #长度是512
print(m.hexdigest())
|
输出结果:
1
2
3
4
5
| #输出结果
e10adc3949ba59abbe56e057f20f883e
6be790258b73da9441099c4cb6aeec1f0c883152dd74e7581b70a648
d7190eb194ff9494625514b6d178c87f99c5973e28c398969d2233f2960a573e
64d09d9930c8ecf79e513167a588cb75439b762ce8f9b22ea59765f32aa74ca19d2f1e97dc922a3d4954594a05062917fb24d1f8e72f2ed02a58ed7534f94d27
|
二、 加盐
加盐是在用户密码加密后,可以再加一个指定的字符串,再次加密,这样,用户密码被破解的概率极低了。
1
2
3
| #如密码是123456:
random_str='dsfka676f9a78#$%^' #盐的值
#加盐后,密码变为: 123456dsfka676f9a78#$%^
|
如要加密,可调用如下函数:
1
2
3
4
5
6
| import hashlib
def my_md5(s,salt=''): #加盐,盐的默认值是空
s=s+salt
news=str(s).encode() #先变成bytes类型才能加密
m=hashlib.md5(news) #创建md5对象
return m.hexdigest() #获取加密后的字符串
|