对称加密 和 哈希加密

对称加密,这种可解密一般用于存储用户手机号码,需要的时候调用解密

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('密码验证失败')