示例
from django.db import models
from cryptography.fernet import Fernet
class EncryptedPasswordField(models.CharField):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# key = Fernet.generate_key()
key = b'WgKLUtYeoPc1s44X2AqNHXIXq0GEX500fA1vP3p8kEI=' # 该值的由来通过print(key),写死确保加解密的key一样
self.cipher_suite = Fernet(key)
def get_prep_value(self, value):
"""存储时"""
if value is not None:
value = self.cipher_suite.encrypt(value.encode()).decode()
return value
def from_db_value(self, value, expression, connection):
"""读取时"""
if value is not None:
value = self.cipher_suite.decrypt(value).decode()
return value