跳转到主要内容

使用pgcrypto加密字段的Python和Django工具。

项目描述

CI

django-pgcrypto

一套处理ASCII装甲(http://www.ietf.org/rfc/rfc2440.txt)和填充的实用函数,以及一组利用这些函数且与pgcrypto函数兼容的Django字段类。

安装

pip install django-pgcrypto

快速入门

您可以使用(大多数情况下)与普通Django字段相同的方式使用几个加密版本的Django字段

from django.db import models
import pgcrypto

class Employee (models.Model):
    name = models.CharField(max_length=100)
    ssn = pgcrypto.EncryptedTextField()
    pay_rate = pgcrypto.EncryptedDecimalField()
    date_hired = pgcrypto.EncryptedDateField(key="datekey", auto_now_add=True)

如果创建字段时未指定(如上例中的ssnpay_rate),则字段将根据以下设置进行加密

  • PGCRYPTO_DEFAULT_CIPHER(目前仅支持aes) - 加密字段时使用的默认算法。
  • PGCRYPTO_DEFAULT_KEY(默认:settings.SECRET_KEY) - 加密时使用的默认密钥。

您还必须确保数据库中已安装pgcrypto扩展。Django通过CryptoExtension迁移使这变得很容易。

查询

您可以通过exactgtgteltlte查找来对加密字段进行过滤,就像对普通字段进行过滤一样。例如,可以像这样查询上述模型

Employee.objects.filter(date_hired__gt="1981-01-01", salary__lt=60000)

注意事项

此库以与pgcrypto的原始加密函数兼容的方式加密和编码数据。所有关于使用直接密钥和完整性检查不足的警告都适用于此处。

这个库早于Django的BinaryField,因此字段本质上是以TextField存储加密数据的。这可能或可能不适合您的应用程序,并且未来的假设版本可能会包括一个切换来存储二进制数据。

项目详情


下载文件

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

源分布

django_pgcrypto-3.0.1.tar.gz (8.3 kB 查看哈希)

上传时间

构建分布

django_pgcrypto-3.0.1-py3-none-any.whl (8.9 kB 查看哈希)

上传时间 Python 3

由...