%global _empty_manifest_terminate_build 0 Name: python-django-mirage-field Version: 1.4.0 Release: 1 Summary: A Django model fields collection that encrypt your data when save to and decrypt when get from database. It keeps data always encrypted in database. License: MIT License URL: https://github.com/luojilab/django-mirage-field Source0: https://mirrors.nju.edu.cn/pypi/web/packages/7e/ca/965987d85817039d168270f59aaf55166499496fe1233dafdd84965ae3d2/django-mirage-field-1.4.0.tar.gz BuildArch: noarch %description 1 | -bYijegsEDrmS1s7ilnspA== ``` ```python from mirage.crypto import Crypto c = Crypto() # key is optional, default will use settings.SECRET_KEY c.encrypt('some_address') # -bYijegsEDrmS1s7ilnspA== c.decrypt('-bYijegsEDrmS1s7ilnspA==') # some_address ``` ## Settings - MIRAGE_SECRET_KEY - MIRAGE_CIPHER_MODE (v1.2.0+) - MIRAGE_CIPHER_IV (v1.2.0+) ### MIRAGE_SECRET_KEY You can use the `settings.SECRET_KEY` as default key, if you want custom another key for mirage, set the `MIRAGE_SECRET_KEY` in settings. Mirage will get the `settings.MIRAGE_SECRET_KEY` first, if not set, mirage will get the `settings.SECRET_KEY`. ### MIRAGE_CIPHER_MODE `MIRAGE_CIPHER_MODE` is optional, choices are below, If don't set, default is `ECB`. - `ECB` - `CBC` ### MIRAGE_CIPHER_IV `MIRAGE_CIPHER_IV` is optional, if you don't set, it will use a default: "1234567890abcdef", it's length must be 16. ## Model Fields 1. EncryptedTextField 2. EncryptedCharField 3. EncryptedEmailField 4. EncryptedIntegerField 5. EncryptedURLField(v1.3.0+) ## Data Migrate Add`mirage`to`INSTALLED_APPS` ### Way 1. Migrations add `app_name`,`model_name`,`field_name` in [migrations.RunPython](https://docs.djangoproject.com/en/2.2/ref/migration-operations/#runpython) ``` from mirage.tools import Migrator migrations.RunPython(Migrator("app_name", "model_name", "field_name").encrypt, reverse_code=Migrator("app_name", 'model_name', 'field_name').decrypt), ``` ### Way 2. Commands Options: * --app * --model * --field * --method (optional: `encrypt`, `decrypt`, `encrypt_to`, `decrypt_to`, `copy_to`) * --tofield (need when use `encryt_to`, `decrypt_to`, `copy_to` method) Optional options: * --offset ("select * from xxx where id > offset") * --total ("select * from xxx order by id limit total") * --limit: set the query count in every update, default is 1000, if you set -1, mirage will query all rows one time to update. Examples ``` ./manage.py mirage --app=yourapp --model=testmodel --field=address --method=encrypt --offset=2000000 --total=3000000 ./manage.py mirage --app=yourapp --model=testmodel --field=address --method=encrypt_to --tofield=encrypted_address ``` ## Exceptions ``` from mirage import exceptions ``` 1. EncryptedFieldException ## Performance ### With ECB mode Migrate data: 6000,000 columns takes 40 minutes, Average 1 column/2.5ms Only encrypt/decrypt: Average 1 value/ms ## Clients * [Java](https://github.com/luojilab/django-mirage-field/tree/master/client/java) %package -n python3-django-mirage-field Summary: A Django model fields collection that encrypt your data when save to and decrypt when get from database. It keeps data always encrypted in database. Provides: python-django-mirage-field BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-django-mirage-field 1 | -bYijegsEDrmS1s7ilnspA== ``` ```python from mirage.crypto import Crypto c = Crypto() # key is optional, default will use settings.SECRET_KEY c.encrypt('some_address') # -bYijegsEDrmS1s7ilnspA== c.decrypt('-bYijegsEDrmS1s7ilnspA==') # some_address ``` ## Settings - MIRAGE_SECRET_KEY - MIRAGE_CIPHER_MODE (v1.2.0+) - MIRAGE_CIPHER_IV (v1.2.0+) ### MIRAGE_SECRET_KEY You can use the `settings.SECRET_KEY` as default key, if you want custom another key for mirage, set the `MIRAGE_SECRET_KEY` in settings. Mirage will get the `settings.MIRAGE_SECRET_KEY` first, if not set, mirage will get the `settings.SECRET_KEY`. ### MIRAGE_CIPHER_MODE `MIRAGE_CIPHER_MODE` is optional, choices are below, If don't set, default is `ECB`. - `ECB` - `CBC` ### MIRAGE_CIPHER_IV `MIRAGE_CIPHER_IV` is optional, if you don't set, it will use a default: "1234567890abcdef", it's length must be 16. ## Model Fields 1. EncryptedTextField 2. EncryptedCharField 3. EncryptedEmailField 4. EncryptedIntegerField 5. EncryptedURLField(v1.3.0+) ## Data Migrate Add`mirage`to`INSTALLED_APPS` ### Way 1. Migrations add `app_name`,`model_name`,`field_name` in [migrations.RunPython](https://docs.djangoproject.com/en/2.2/ref/migration-operations/#runpython) ``` from mirage.tools import Migrator migrations.RunPython(Migrator("app_name", "model_name", "field_name").encrypt, reverse_code=Migrator("app_name", 'model_name', 'field_name').decrypt), ``` ### Way 2. Commands Options: * --app * --model * --field * --method (optional: `encrypt`, `decrypt`, `encrypt_to`, `decrypt_to`, `copy_to`) * --tofield (need when use `encryt_to`, `decrypt_to`, `copy_to` method) Optional options: * --offset ("select * from xxx where id > offset") * --total ("select * from xxx order by id limit total") * --limit: set the query count in every update, default is 1000, if you set -1, mirage will query all rows one time to update. Examples ``` ./manage.py mirage --app=yourapp --model=testmodel --field=address --method=encrypt --offset=2000000 --total=3000000 ./manage.py mirage --app=yourapp --model=testmodel --field=address --method=encrypt_to --tofield=encrypted_address ``` ## Exceptions ``` from mirage import exceptions ``` 1. EncryptedFieldException ## Performance ### With ECB mode Migrate data: 6000,000 columns takes 40 minutes, Average 1 column/2.5ms Only encrypt/decrypt: Average 1 value/ms ## Clients * [Java](https://github.com/luojilab/django-mirage-field/tree/master/client/java) %package help Summary: Development documents and examples for django-mirage-field Provides: python3-django-mirage-field-doc %description help 1 | -bYijegsEDrmS1s7ilnspA== ``` ```python from mirage.crypto import Crypto c = Crypto() # key is optional, default will use settings.SECRET_KEY c.encrypt('some_address') # -bYijegsEDrmS1s7ilnspA== c.decrypt('-bYijegsEDrmS1s7ilnspA==') # some_address ``` ## Settings - MIRAGE_SECRET_KEY - MIRAGE_CIPHER_MODE (v1.2.0+) - MIRAGE_CIPHER_IV (v1.2.0+) ### MIRAGE_SECRET_KEY You can use the `settings.SECRET_KEY` as default key, if you want custom another key for mirage, set the `MIRAGE_SECRET_KEY` in settings. Mirage will get the `settings.MIRAGE_SECRET_KEY` first, if not set, mirage will get the `settings.SECRET_KEY`. ### MIRAGE_CIPHER_MODE `MIRAGE_CIPHER_MODE` is optional, choices are below, If don't set, default is `ECB`. - `ECB` - `CBC` ### MIRAGE_CIPHER_IV `MIRAGE_CIPHER_IV` is optional, if you don't set, it will use a default: "1234567890abcdef", it's length must be 16. ## Model Fields 1. EncryptedTextField 2. EncryptedCharField 3. EncryptedEmailField 4. EncryptedIntegerField 5. EncryptedURLField(v1.3.0+) ## Data Migrate Add`mirage`to`INSTALLED_APPS` ### Way 1. Migrations add `app_name`,`model_name`,`field_name` in [migrations.RunPython](https://docs.djangoproject.com/en/2.2/ref/migration-operations/#runpython) ``` from mirage.tools import Migrator migrations.RunPython(Migrator("app_name", "model_name", "field_name").encrypt, reverse_code=Migrator("app_name", 'model_name', 'field_name').decrypt), ``` ### Way 2. Commands Options: * --app * --model * --field * --method (optional: `encrypt`, `decrypt`, `encrypt_to`, `decrypt_to`, `copy_to`) * --tofield (need when use `encryt_to`, `decrypt_to`, `copy_to` method) Optional options: * --offset ("select * from xxx where id > offset") * --total ("select * from xxx order by id limit total") * --limit: set the query count in every update, default is 1000, if you set -1, mirage will query all rows one time to update. Examples ``` ./manage.py mirage --app=yourapp --model=testmodel --field=address --method=encrypt --offset=2000000 --total=3000000 ./manage.py mirage --app=yourapp --model=testmodel --field=address --method=encrypt_to --tofield=encrypted_address ``` ## Exceptions ``` from mirage import exceptions ``` 1. EncryptedFieldException ## Performance ### With ECB mode Migrate data: 6000,000 columns takes 40 minutes, Average 1 column/2.5ms Only encrypt/decrypt: Average 1 value/ms ## Clients * [Java](https://github.com/luojilab/django-mirage-field/tree/master/client/java) %prep %autosetup -n django-mirage-field-1.4.0 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-django-mirage-field -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Fri May 05 2023 Python_Bot - 1.4.0-1 - Package Spec generated