跳转到主要内容

这是一个使用PyNaCl加密的Django模型字段类集合。

项目描述

Django NaCl加密字段

GitHub Actions: test GitHub Actions: lint Documentation Status

这是一个使用PyNaCl加密的Django模型字段类集合。此包主要基于django-encrypted-fields,该包使用过时的Keyczar库来加密字段。除此之外,它还受到django-fernet-field的启发。

关于PyNaCl

PyNaCllibsodium的Python绑定,而libsodium是Networking and Cryptography库的一个分支。这些库的目标是提高可用性、安全性和速度。

入门

安装django-nacl-fields

pip install django-nacl-fields

nacl_encrypted_fields添加到您的INSTALLED_APPS

INSTALLED_APPS = [
    ...
    'nacl_encrypted_fields'
    ...
]

创建用于加密的密钥

$ python manage.py createkey
# put the following line in your settings.py:
NACL_FIELDS_KEY = b'p1Et2Rb@;^BYdo`ZRFi!Hc-MXu(^|bVqA-FGqffM'

在您的settings.py

NACL_FIELDS_KEY = b'p1Et2Rb@;^BYdo`ZRFi!Hc-MXu(^|bVqA-FGqffM'

然后,在您的models.py

from django.db import models
from nacl_encrypted_fields.fields import NaClTextField


class MyModel(models.Model):
    text_field = NaClTextField()

像平常一样使用该模型,数据将被加密存储在数据库中。

注意:加密数据不能用于查询或排序。在 SQL 中,这些数据都将看起来像带有随机文本的文本字段。

您也可以在创建时自动将字段密钥追加到设置文件中,使用 -f 标志。

python manage.py createkey -f settings.py

settings.py 是您设置文件的路径。

可用字段

目前内置且经过单元测试的字段。

  • NaClCharField
  • NaClTextField
  • NaClDateTimeField
  • NaClIntegerField
  • NaClFloatField
  • NaClEmailField
  • NaClBooleanField
  • NaClJSONField

加密您的字段

通过使用提供的 NaClFieldMixin 可以创建新字段。

from django.db import models
from nacl_encrypted_fields import NaClFieldMixin


class NaClIPAddressField(NaClFieldMixin, models.IPAddressField):
    pass

请在尝试此操作时遇到任何问题请报告。

贡献

使用以下命令启动用于测试的 PostgreSQL Docker 容器:

docker run --rm -e POSTGRES_PASSWORD=postgres POSTGRES_DB=github_actions postgres

然后,您可以在另一个窗口中使用以下命令运行测试:

python -m venv env
source env/bin/activate
pip install '.[test]'
python manage.py test

在您贡献之前,请确保对您的代码进行代码审查。

pip install '.[lint]'
flake8 --exclude .git,pycache,docs/conf.py,build,dist,env

您的代码完成后,请随时发起新的 pull request。

参考文献

项目详情


下载文件

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

源分发

django-nacl-fields-4.1.0.tar.gz (14.5 kB 查看哈希)

上传时间

构建分发

django_nacl_fields-4.1.0-py3-none-any.whl (12.9 kB 查看哈希)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面