Skip to main content
Django Cryptographic Fields
===========================

.. image:: https://circleci.com/gh/foundertherapy/django-cryptographic-fields.png
:target: https://circleci.com/gh/foundertherapy/django-cryptographic-fields

About
-----

``django-cryptographic-fields`` is set of fields that wrap standard Django
fields with encryption provided by the python cryptography library. These
fields are much more compatible with a 12-factor design since they take their
encryption key from the settings file instead of a file on disk used by
``keyczar``.

While keyczar is an excellent tool to use for encryption, it's not compatible
with Python 3, and it requires, for hosts like Heroku, that you either check
your key file into your git repository for deployment, or implement manual
post-deployment processing to write the key stored in an environment variable
into a file that keyczar can read.

Getting Started
---------------

$ pip install django-cryptographic-fields

Add "cryptographic_fields" to your INSTALLED_APPS setting like this:

INSTALLED_APPS = (
...
'cryptographic_fields',
)

``django-cryptographic-fields`` expects the encryption key to be specified
using ``FIELD_ENCRYPTION_KEY`` in your project's ``settings.py`` file. For
example, to load it from the local environment:

import os

FIELD_ENCRYPTION_KEY = os.environ.get('FIELD_ENCRYPTION_KEY', '')

To use an encrypted field in a Django model, use one of the fields from the
``cryptographic_fields`` module:

from cryptographic_fields.fields import EncryptedCharField

class EncryptedFieldModel(models.Model):
encrypted_char_field = EncryptedCharField(max_length=100)

For fields that require ``max_length`` to be specified, the ``Encrypted``
variants of those fields will automatically increase the size of the database
field to hold the encrypted form of the content. For example, a 3 character
CharField will automatically specify a database field size of 100 characters
when ``EncryptedCharField(max_length=3)`` is specified.

Due to the nature of the encrypted data, filtering by values contained in
encrypted fields won't work properly. Sorting is also not supported.

Generating an Encryption Key
----------------------------

There is a Django management command ``generate_encryption_key`` provided
with the ``cryptographic_fields`` library. Use this command to generate a new
encryption key to set as ``settings.FIELD_ENCRYPTION_KEY``.

./manage.py generate_encryption_key

Running this command will print an encryption key to the terminal, which can
be configured in your environment or settings file.

Release files for django-cryptographic-fields 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-cryptographic-fields 0.5.1
File Size Uploaded
django-cryptographic-fields-0.5.1.tar.gz 7.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-cryptographic-fields 0.5.1
File Interpreter ABI Platform
django-cryptographic-fields-0.5.1.macosx-10.11-x86_64.tar.gz Details

Total release size: 21.8 kB

Release files / django-cryptographic-fields-0.5.1.tar.gz

Download URL django-cryptographic-fields-0.5.1.tar.gz
Size 7.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0acc82a74feddac626d1aacf32e8ce020df5e26fa2c07ec9ac52232e79237a73
BLAKE2b-256 checksum
How to use checksums
f969f42b56f3493a672c0b39ef04585eb8f6686a9388965b6b1546bb8424e5a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / django-cryptographic-fields-0.5.1.macosx-10.11-x86_64.tar.gz

Download URL django-cryptographic-fields-0.5.1.macosx-10.11-x86_64.tar.gz
Size 14.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e8a01abf88f31029d11568a55996c1389f6864e01d81a2b0ab089f226585626e
BLAKE2b-256 checksum
How to use checksums
816431ec65ee76815649d1fbe5e63344d56fdf6034b515ccb31a33b1d351e5d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.5.1 This release

2 release files

0.5.0

2 release files

0.4.0

1 release file

0.3.0

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page