Save field value encrypted to database.
Project description
django-safe-fields
Save field value encrypted to database.
Install
pip install django-safe-fields
Shipped Fields
Mixins
- SafeFieldMixinBase
- SafeStringFieldMixin
- SafeIntegerFieldMixin
Fields
- SafeCharField
- SafeTextField
- SafeEmailField
- SafeURLField
- SafeGenericIPAddressField
- SafeIntegerField
Note
- Default cipher is aes-128-ecb. It keeps the same with mysql's aes_encrypt and aes_decrypt when server variable block_encryption_mode=aes-128-ecb.
- Default password is settings.SECRET_KEY, but we STRONGLY suggest you use different password for every different field.
Usage
pro/settings.py
INSTALLED_APPS = [
...
'django_safe_fields',
...
]
- Insert
django_safe_fields
into INSTALLED_APPS.
app/models.py
from django.db import models
from django.conf import settings
from django_safe_fields.fields import SafeCharField
from django_safe_fields.fields import SafeGenericIPAddressField
from django_safe_fields.fields import SafeIntegerField
from fastutils.cipherutils import S12Cipher
from fastutils.cipherutils import HexlifyEncoder
class Account(models.Model):
username = SafeCharField(max_length=64)
name = SafeCharField(max_length=64, cipher_class=S12Cipher)
email = SafeCharField(max_length=128, null=True, blank=True, cipher=S12Cipher(password=settings.SECRET_KEY, encoder=HexlifyEncoder(), force_text=True))
last_login_ip = SafeGenericIPAddressField(max_length=256, null=True, blank=True, password="THIS FIELD PASSWORD")
level = SafeIntegerField(null=True, blank=True)
def __str__(self):
return self.username
- All fields will be stored with encryption.
- AesCipher is a strong cipher.
- With aes encryption, you can NOT search partly, only the
exact
search rule will be accepted. - With aes encryption, you can NOT sort.
- S12Cipher is a week cipher that let you search the field partly and also let you sort with the field.
- IvCihper is a week cipher for integer field that let you sort with the field.
Releases
v0.1.1 2020-06-23
- Fix problem in objects.get that double encrypt the raw data.
v0.1.0 2020-06-20
- First release.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.