georgemarshall / django-cryptography

Easily encrypt data in Django
https://django-cryptography.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
371 stars 69 forks source link
django python

Django Cryptography

A set of primitives for easily encrypting data in Django, wrapping the Python Cryptography library. Also provided is a drop in replacement for Django's own cryptographic primitives, using Cryptography as the backend provider.

Do not forget to read the documentation_.

.. START HIDDEN .. image:: https://img.shields.io/github/workflow/status/georgemarshall/django-cryptography/CI/master :target: https://github.com/georgemarshall/django-cryptography/actions/workflows/main.yml :alt: GitHub Workflow Status (branch) .. image:: https://img.shields.io/codecov/c/github/georgemarshall/django-cryptography/master :target: https://app.codecov.io/gh/georgemarshall/django-cryptography/branch/master :alt: Codecov branch .. END HIDDEN

Cryptography by example

Using symmetrical encryption to store sensitive data in the database. Wrap the desired model field with encrypt to easily protect its contents.

.. code-block:: python

from django.db import models

from django_cryptography.fields import encrypt

class MyModel(models.Model): name = models.CharField(max_length=50) sensitive_data = encrypt(models.CharField(max_length=50))

The data will now be automatically encrypted when saved to the database. encrypt uses an encryption that allows for bi-directional data retrieval.

Requirements

Installation

.. code-block:: console

pip install django-cryptography

.. _Cryptography: https://cryptography.io/ .. _Django: https://www.djangoproject.com/ .. _Python: https://www.python.org/ .. _documentation: https://django-cryptography.readthedocs.io/en/latest/