A set of django fields that internally are encrypted using the cryptography.io native python encryption library.
Project description
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.
===========================
.. 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.
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
Built Distribution
File details
Details for the file django-cryptographic-fields-0.5.1.tar.gz
.
File metadata
- Download URL: django-cryptographic-fields-0.5.1.tar.gz
- Upload date:
- Size: 7.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0acc82a74feddac626d1aacf32e8ce020df5e26fa2c07ec9ac52232e79237a73 |
|
MD5 | 1e124c5b086a8a3169dcb029ac0e9a39 |
|
BLAKE2b-256 | f969f42b56f3493a672c0b39ef04585eb8f6686a9388965b6b1546bb8424e5a2 |
File details
Details for the file django-cryptographic-fields-0.5.1.macosx-10.11-x86_64.tar.gz
.
File metadata
- Download URL: django-cryptographic-fields-0.5.1.macosx-10.11-x86_64.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8a01abf88f31029d11568a55996c1389f6864e01d81a2b0ab089f226585626e |
|
MD5 | 7af1ac63fcda7ff9315061e6a49d2344 |
|
BLAKE2b-256 | 816431ec65ee76815649d1fbe5e63344d56fdf6034b515ccb31a33b1d351e5d3 |