一组字段,它使用python cryptography库提供的加密将标准Django字段包装起来。
项目描述
Django Encrypted Model Fields
关于
这是https://github.com/foundertherapy/django-cryptographic-fields的一个分支。它已经被重命名,并且已更新以正确支持Python3和Django的最新版本。
django-encrypted-model-fields
是一组字段,它使用python cryptography库提供的加密将标准Django字段包装起来。由于它们从设置文件而不是由 keyczar
使用的磁盘上的文件中获取加密密钥,因此这些字段与12因子设计具有更好的兼容性。
虽然keyczar是一个用于加密的优秀工具,但它与Python 3不兼容,并且对于Heroku等主机,它需要您将密钥文件检入到git仓库中用于部署,或者实现手动部署后的处理以将存储在环境变量中的密钥写入keyczar可以读取的文件。
生成加密密钥
与encrypted_model_fields
库一起提供了一个Django管理命令generate_encryption_key
。使用此命令生成一个新的加密密钥,并将其设置为settings.FIELD_ENCRYPTION_KEY
./manage.py generate_encryption_key
运行此命令将在终端打印出一个加密密钥,您可以在环境中或设置文件中进行配置。
注意:此命令仅在干净的新Django项目中有效,该项目中任何应用都没有导入encrypted_model_fields。 如果您已经导入了encrypted_model_fields,请尝试在Python shell中运行此操作
import os
import base64
new_key = base64.urlsafe_b64encode(os.urandom(32))
print(new_key)
入门指南
$ pip install django-encrypted-model-fields
将"encrypted_model_fields"添加到您的INSTALLED_APPS设置中,如下所示
INSTALLED_APPS = (
...
'encrypted_model_fields',
)
django-encrypted-model-fields
期望在项目的settings.py
文件中使用FIELD_ENCRYPTION_KEY
指定加密密钥。例如,从本地环境加载它
import os
FIELD_ENCRYPTION_KEY = os.environ.get('FIELD_ENCRYPTION_KEY', '')
要在Django模型中使用加密字段,请使用encrypted_model_fields
模块中的字段之一
from encrypted_model_fields.fields import EncryptedCharField
class EncryptedFieldModel(models.Model):
encrypted_char_field = EncryptedCharField(max_length=100)
对于需要指定max_length
的字段,这些字段的Encrypted
变体将自动增加数据库字段的大小以存储加密后的内容。例如,指定EncryptedCharField(max_length=3)
时,3个字符的CharField将自动指定数据库字段大小为100个字符。
由于加密数据的特点,按加密字段中的值进行过滤将无法正常工作。排序也不受支持。
开发环境
添加了Tox,用于测试不同版本的Django和Python。要开始:pip install -r requirements/dev.txt
使用pyenv
添加所需的Python解释器:pyenv install 3.6.15
pyenv install 3.7.12
pyenv install 3.8.12
pyenv install 3.9.10
pyenv install 3.10.2
将所需的版本添加到本地版本:pyenv local 3.6.15 3.7.12 3.8.12 3.9.10 3.10.2
运行tox
:tox
项目详情
散列 for django_encrypted_model_fields-0.6.5-py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | b21bbdd8ae2e1a0ea37a5049b3ba46e6e63bf287ad241219a058fac1070796cc |
|
MD5 | 70633bad03ebee702e5f58f0eac15a10 |
|
BLAKE2b-256 | e4361b86079a489f181e33bd83600127e7b3b73c66cd609ac672e58de93ed9a9 |