Skip to main content

A set of django fields that internally are encrypted using the cryptography.io native python encryption library.

Project description

Django Encrypted Model Fields
=============================

.. image:: https://travis-ci.org/lanshark/django-encrypted-model-fields.png
:target: https://travis-ci.org/lanshark/django-encrypted-model-fields

About
-----

This is a fork of https://github.com/foundertherapy/django-cryptographic-fields.
It has been renamed, and updated to properly support Python3 and latest versions
of Django.

``django-encrypted-model-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-encrypted-model-fields

Add "encrypted_model_fields" to your INSTALLED_APPS setting like this:

INSTALLED_APPS = (
...
'encrypted_model_fields',
)

``django-encrypted-model-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
``encrypted_model_fields`` module:

from encrypted_model_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 ``encrypted_model_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.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-encrypted-model-fields-0.5.3.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

django_encrypted_model_fields-0.5.3-py2.py3-none-any.whl (12.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file django-encrypted-model-fields-0.5.3.tar.gz.

File metadata

File hashes

Hashes for django-encrypted-model-fields-0.5.3.tar.gz
Algorithm Hash digest
SHA256 a385453fa67825259ff0cf50259eac6ef6cd799511f6e6d0e70d17153088458f
MD5 4e2849a1bd9c15636806c4ae47a86d76
BLAKE2b-256 49013ab5b8265714aa5eb4e83eeda182edc5772cbe6b43bd7de6802fc39c42f5

See more details on using hashes here.

File details

Details for the file django_encrypted_model_fields-0.5.3-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for django_encrypted_model_fields-0.5.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7a383c6ebfbac1fce3ce051eb1141b67abde4acbe96241a04a8f2ae954e0e49d
MD5 750c613153965003ffaf18bc2c49de2c
BLAKE2b-256 2c594565f105e9548c6f923676ff19d5561fd497348c675b52f9f17a63511aca

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page