django 过滤器和 django 加密字段

2023-12-12

我有以下具有名字字段的模型。

from django.db import models
from encrypted_fields import EncryptedCharField

class Customer(models.Model):
    first_name = EncryptedCharField(max_len=30)

I use Django 加密字段加密存储在我的数据库中的数据。截至目前(我认为)我无法过滤结果。

我想做这个:

customers = Customer.objects.all().filter(first_name__icontains="George") #George exists as customer

但我得到一个空列表。有什么办法可以解决这个问题吗?


根据设计,这是不可能的。数据库中存储的数据是不透明的 blob,因此即使您将字段设置为包含“George”的明文,该文本也不在数据库中。

再次加密数据并将存储的数据库值与其进行比较的想法很有趣,但它仍然行不通。数据是用随机数加密的初始化向量,因此您不能简单地重现结果。

可能的解决方案

不过,您也许可以通过散列来解决该问题。例如,如果您的用户提供电子邮件和密码进行身份验证,但您希望将电子邮件加密存储在数据库中,则除了加密电子邮件之外,您还可以存储电子邮件的哈希版本。然后,您可以重现哈希值并对其进行查询,并且只有在找到用户后才解密电子邮件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

django 过滤器和 django 加密字段 的相关文章

随机推荐