跳转到主要内容

一组字段,它使用python cryptography库提供的加密将标准Django字段包装起来。

项目描述

Django Encrypted Model Fields

image

关于

这是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

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

django-encrypted-model-fields-0.6.5.tar.gz (7.3 kB 查看散列)

上传时间

构建分布

django_encrypted_model_fields-0.6.5-py3-none-any.whl (8.9 kB 查看散列)

上传时间 Python 3

支持