3

是否有任何文档或示例/教程如何让 EncryptedCharField 在 Django 模型中工作?

我花了很多时间在我的 django 项目中安装 django-extension + keyczar 等。没有文档如何安装它。

到目前为止是这样的:

pip install django-extensions

将“django_extensions”添加到 INSTALLED_APPS

点安装 python-keyczar

使用 EncryptedCharField 创建模型 + 添加字段

添加 ENCRYPTED_FIELD_KEYS_DIR = '../../../enc-keys'

下载 KeyczarTool-0.71g-090613.jar

运行以下命令: java -jar KeyczarTool-0.71g-090613.jar create --location=./enc-keys -- purpose=crypt --name="first key" --asymmetric=rsa

到目前为止一切顺利,但是当我运行服务器时,出现以下错误:

keyczar.errors.KeyNotFoundError:没有找到带有 hash_val 标识符的键。

TRACEBACK
  File "/Users/nv/Projects/project/models/client.py", line 78, in <module>
    class Authorization(models.Model):
  File "/Users/nv/Projects/project/models/client.py", line 86, in Authorization
    iban_enc = EncryptedCharField(max_length=155)
  File "/Users/nv/Projects/project/lib/python2.7/site-packages/django_extensions/db/fields/encrypted.py", line 121, in __init__
    super(EncryptedCharField, self).__init__(*args, **kwargs)
  File "/Users/nv/Projects/project/lib/python2.7/site-packages/django_extensions/db/fields/encrypted.py", line 32, in __init__
    max_length = len(self.prefix) + len(self.crypt.Encrypt('x' * max_length))
  File "/Users/nv/Projects/project/lib/python2.7/site-packages/keyczar/keyczar.py", line 338, in Encrypt
    encrypting_key = self.primary_key
  File "/Users/nv/Projects/project/lib/python2.7/site-packages/keyczar/keyczar.py", line 73, in <lambda>
    primary_key = property(lambda self: self.GetKey(self.primary_version),
  File "/Users/nv/Projects/project/lib/python2.7/site-packages/keyczar/keyczar.py", line 128, in GetKey
    raise errors.KeyNotFoundError(key_id)
keyczar.errors.KeyNotFoundError: Key with hash_val identifier None not found.

我无法弄清楚我做错了什么。

4

2 回答 2

5

找到解决方案

创建后:

  • java -jar KeyczarTool-0.71g-090613.jar addkey --location=./enc-keys --status="primary" --size=2048
于 2013-11-13T13:07:14.983 回答
1

找到了没有 JAVA 的解决方案(puach)

尝试这个

bin/keyczart create --location=keys --purpose=crypt --name=models &&     bin/keyczart addkey --location=keys --status=primary

确保keys是你项目中的一个文件夹,也许是/var/keys ?? 或任何你喜欢的地方

干杯

于 2016-05-10T20:58:01.633 回答