对称加密 和 哈希加密
对称加密,这种可解密一般用于存储用户手机号码,需要的时候调用解密
from cryptography.fernet import Fernet #加密
password = '18119162500' #这是要加密的密码
#加密,第一个参数是key密钥 第二参数是密码,后面加.encode()是转成bytes
password = Fernet('BxBp_sdfdsfsdfdf1pLguHL8MvtwGSKEPj4P8g6faBM=').encrypt(password.encode())
print(password)
#解密,第一个参数是key密钥,第二个参数是加密后的密文
password = Fernet('BxBp_sdfdsfsdfdf1pLguHL8MvtwGSKEPj4P8g6faBM=').decrypt(password)
print(password)
哈希加密,这是一种不可解密的方法,一般用于存储用户密码
加密的时候保存密码时,可以再peewee模型里定义好,这样就自动加密了:
from peewee import *
import hashlib
#定义一个用户数据库
class User(Model):
username = CharField(unique=True,max_length=150)
password = CharField(max_length=150)
#每次保存密码时自动加密
def save(self, *args, **kwargs):
self.password = hashlib.sha256(self.password.encode('utf-8')).hexdigest()
return super().save(*args, **kwargs)
#对比密码加密是否一致,此函数对外调用
def check_password(self, password):
# 对比自身密文和传入进来的再加密
return self.password == hashlib.sha256(password.encode('utf-8')).hexdigest()
调用解密对比:
from lib.db import User
#验证是否通过
user = User.get(User.username == 'username')
if user.check_password('password'): #要对比的密码
print('密码验证通过')
else:
print('密码验证失败')