获取django-fernet字段中的加密值



我使用django-fernet字段库:

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

有什么方法可以获得实际存储在数据库中的加密值吗?

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 Tink支持的代码库https://github.com/script3r/django-tink-fields

最新更新