Python ——md5加密
md5加密不是可逆转的 ---- 不可解密
md5普通加密
-
记住--填写加密的字符串要编码,不然会报错
-
字符串通过Unicode编码来存储的,所以在加密之前,要对字符串进行编码成二进制的
```
但是这种普通的md5加密,还是能通过撞库来破解的
```
import hashlib
obj = hashlib.md5()
obj.update('123'.encode('utf-8'))
resilt = obj.hexdigest()
print(resilt) #202cb962ac59075b964b07152d234b70
加盐:
-
为了防止撞库来破解md5的加密,所以要加盐,来提高撞库的难度
-
加盐之后一般很难破解
import hashlib #加盐的时候随便加字符串, obj = hashlib.md5('qewdwdw'.encode('utf-8')) obj.update('123'.encode('utf-8')) resilt = obj.hexdigest() print(resilt) #202cb962ac59075b964b07152d234b70
2、md5的简单应用
''' 实现用户的注册登录功能 但是用户的密码要进行md5加密 禁止密码明文出现 ''' import hashlib USER_PWS = [] #加密函数 def encry(psw): obj = hashlib.md5('weweeecdfef'.encode('utf-8')) #加盐 obj.update(psw.encode('utf-8')) result = obj.hexdigest() return result #注册 def regis(): print('{:*^30}'.format('注册界面')) while True: user = input('请输入用户名:') if user == 'N': return paw = input('请输出密码:') user_pws = {'username':user,'pasword':encry(paw)} USER_PWS.append(user_pws) #登录 def login(): print('{:*^30}'.format('登录界面')) user = input('请输入用户名:') if user == 'N': return pasw = input('请输出密码:') #for循环比较用户名和密码 for i in USER_PWS: if user == i['username'] and encry(pasw) == i['pasword']: return True regis() if login(): print('{:=^30}'.format('登录成功')) else: print('{:=^30}'.format('登录失败'))
运行结果截图: