无法解决的问题:按Django加密字段筛选

2024-05-20 22:04:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用cryptographic_fields.fields库来加密我的一些字段,更确切地说是客户的路由号码。你知道吗

我的最终目标是能够检查account_number是否已经在其他帐户中使用过。你知道吗

下面是我的型号.py看起来像:

class Account(models.Model):
    account_number = EncryptedCharField(max_length=20, null=True, blank=True)

我想看看能不能用这个字段过滤。你知道吗

在测试期间,我创建了2个帐号,帐号为'123'。你知道吗

当我试图通过指定的帐号过滤和获取这两个帐号时。我得到一个空的查询集。你知道吗

Account.objects.filter(account_number='123')

我的想法是,我得到一个空查询集的原因是因为这个帐号已经被加密了。你知道吗

我正在查看源代码,尝试对字符串进行编码并使用新的encode值进行搜索。你知道吗

from cryptographic_fields.fields import get_crypter

CRYPTER = get_crypter()

account_number = CRYPTER.encrypt('123'.encode('utf-8'))

Account.objects.filter(account_number=account_number)

但这不工作,因为它似乎加密产品一个新的不同的加密值每次我使用它。你知道吗


Tags: true路由numberfieldsget客户objectsaccount