首页 |  我的博客 |  查看该博主内容分类 | 

django model模型数据存储和读取时进行操作(如加解密)

示例

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


posted @ 2023-12-07 11:22  Z哎呀  阅读(33)  评论(0)    收藏  举报