我使用django-fernet-field库:
class RoutePoint(models.Model):
username = models.CharField(max_length=30)
password = EncryptedCharField(max_length=30, null=True)
当我访问加密字段时,该字段的值将自动解密。
p = RoutePoint.objects.all()[0]
print(p.password)
> mypass
有任何方法可以获得实际存储在数据库中的加密值吗?
发布于 2022-05-23 13:05:09
在model.Field
中执行解密的方法是def from_db_value(self, value, expression, connection, *args)
。理论上,您可以为RoutePoint.password
重写此方法,并让它返回一个元组,第一个元素是原始字段值,第二个元素是解密明文。
下面是指向相关源代码https://github.com/orcasgit/django-fernet-fields/blob/master/fernet_fields/fields.py#L74的指针。
备注: django-fernet-fields
已经3年多没有更新了,作为以前的用户,我把代码库分叉成了Google而不是https://github.com/script3r/django-tink-fields支持的代码库。
https://stackoverflow.com/questions/71822542
复制相似问题