# django-encrypted-fields
Uma biblioteca Django para criptografar e descriptografar campos em modelos (ORM), incluindo tipos de dados simples, arquivos e imagens.
Esta biblioteca utiliza o módulo `cryptography.fernet` para garantir a criptografia simétrica, protegendo dados sensíveis de maneira simples e eficaz.
## Funcionalidades
- Criptografa campos de tipos de dados como `IntegerField`, `FloatField`, `CharField`, `BooleanField`, entre outros.
- Suporte a campos de arquivo (`FileField`) e imagens (`ImageField`) com criptografia.
- Integração fácil com o ORM do Django, sem necessidade de alterações no modelo.
- Segurança robusta utilizando o `cryptography.fernet`.
## Requisitos
- Python 3.10 ou superior
- Django 4.2 ou superior
- Biblioteca `cryptography`
- Biblioteca `pillow`
- Biblioteca `django`
## Instalação
Para instalar a biblioteca, basta adicionar o pacote no seu projeto ou instalá-lo via `pip`.
### Usando `pip`:
```bash
pip install django-encrypted-fields
```
### Manualmente:
1. Baixe o código fonte ou clone o repositório:
```bash
git clone https://github.com/D3NKYT0/django-encrypted-fields
```
2. Instale os requisitos:
```bash
pip install -r requirements.txt
```
## Configuração
1. **Adicione a chave de criptografia no arquivo `settings.py`:**
No arquivo `settings.py`, defina a chave de criptografia `ENCRYPTION_KEY`:
```python
ENCRYPTION_KEY = 'sua_chave_gerada_aleatoriamente_com_32_bytes'
DATA_UPLOAD_MAX_MEMORY_SIZE = 10485760 # 10 * 1024 * 1024
SERVE_DECRYPTED_FILE_URL_BASE = 'patch/here/'
```
**Importante**: A chave de criptografia deve ser mantida em segredo. Use uma chave única para o seu projeto e não compartilhe publicamente.
2. **Adicionar `django-encrypted-fields` à lista de apps instalados:**
No arquivo `settings.py`, adicione o app à lista `INSTALLED_APPS`:
```python
INSTALLED_APPS = [
# outros apps
'server_files', # Seu app com os campos criptografados
]
```
## Uso
### Modelos
Agora, você pode usar os campos criptografados em seus modelos Django da seguinte forma:
```python
from django.db import models
from encrypted_fields.encrypted_fields import *
from encrypted_fields.encrypted_files import *
class MeuModelo(models.Model):
campo_inteiro = EncryptedIntegerField()
campo_arquivo = EncryptedFileField(upload_to='arquivos/')
campo_imagem = EncryptedImageField(upload_to='imagens/')
```
### Funcionalidade dos campos:
- **`EncryptedIntegerField`**: Campo para armazenar valores inteiros criptografados.
- **`EncryptedFileField`**: Campo para armazenar arquivos criptografados.
- **`EncryptedImageField`**: Campo para armazenar imagens criptografadas.
Os valores são criptografados automaticamente antes de serem salvos no banco de dados e descriptografados quando acessados.
## Contribuição
Sinta-se à vontade para contribuir! Para sugestões ou melhorias, siga os seguintes passos:
1. Faça um fork deste repositório.
2. Crie uma branch (`git checkout -b feature-nome-da-sua-feature`).
3. Comite suas mudanças (`git commit -am 'Adicionando nova funcionalidade'`).
4. Envie para o repositório remoto (`git push origin feature-nome-da-sua-feature`).
5. Abra um Pull Request.
## Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo [LICENSE](LICENSE) para mais detalhes.
Raw data
{
"_id": null,
"home_page": "https://github.com/D3NKYT0/django-encrypted-fields",
"name": "django-encrypted-fields-and-files",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": "Denky <contato@denky.dev.br>",
"keywords": "django, encryption, fields, files, timestamp, cache",
"author": "Denky",
"author_email": "Denky <contato@denky.dev.br>",
"download_url": "https://files.pythonhosted.org/packages/68/3c/b2aef4d90aa20b2b6c3e485350062333e34770dbdecf8b5f31bf709f54b7/django_encrypted_fields_and_files-0.1.12.tar.gz",
"platform": null,
"description": "# django-encrypted-fields\r\n\r\nUma biblioteca Django para criptografar e descriptografar campos em modelos (ORM), incluindo tipos de dados simples, arquivos e imagens. \r\n\r\nEsta biblioteca utiliza o m\u00f3dulo `cryptography.fernet` para garantir a criptografia sim\u00e9trica, protegendo dados sens\u00edveis de maneira simples e eficaz.\r\n\r\n## Funcionalidades\r\n\r\n- Criptografa campos de tipos de dados como `IntegerField`, `FloatField`, `CharField`, `BooleanField`, entre outros.\r\n- Suporte a campos de arquivo (`FileField`) e imagens (`ImageField`) com criptografia.\r\n- Integra\u00e7\u00e3o f\u00e1cil com o ORM do Django, sem necessidade de altera\u00e7\u00f5es no modelo.\r\n- Seguran\u00e7a robusta utilizando o `cryptography.fernet`.\r\n\r\n## Requisitos\r\n\r\n- Python 3.10 ou superior\r\n- Django 4.2 ou superior\r\n- Biblioteca `cryptography`\r\n- Biblioteca `pillow`\r\n- Biblioteca `django`\r\n\r\n## Instala\u00e7\u00e3o\r\n\r\nPara instalar a biblioteca, basta adicionar o pacote no seu projeto ou instal\u00e1-lo via `pip`.\r\n\r\n### Usando `pip`:\r\n\r\n```bash\r\npip install django-encrypted-fields\r\n```\r\n\r\n### Manualmente:\r\n\r\n1. Baixe o c\u00f3digo fonte ou clone o reposit\u00f3rio:\r\n \r\n ```bash\r\n git clone https://github.com/D3NKYT0/django-encrypted-fields\r\n ```\r\n\r\n2. Instale os requisitos:\r\n \r\n ```bash\r\n pip install -r requirements.txt\r\n ```\r\n\r\n## Configura\u00e7\u00e3o\r\n\r\n1. **Adicione a chave de criptografia no arquivo `settings.py`:**\r\n\r\n No arquivo `settings.py`, defina a chave de criptografia `ENCRYPTION_KEY`:\r\n\r\n ```python\r\n ENCRYPTION_KEY = 'sua_chave_gerada_aleatoriamente_com_32_bytes'\r\n DATA_UPLOAD_MAX_MEMORY_SIZE = 10485760 # 10 * 1024 * 1024\r\n SERVE_DECRYPTED_FILE_URL_BASE = 'patch/here/'\r\n ```\r\n\r\n **Importante**: A chave de criptografia deve ser mantida em segredo. Use uma chave \u00fanica para o seu projeto e n\u00e3o compartilhe publicamente.\r\n\r\n2. **Adicionar `django-encrypted-fields` \u00e0 lista de apps instalados:**\r\n\r\n No arquivo `settings.py`, adicione o app \u00e0 lista `INSTALLED_APPS`:\r\n\r\n ```python\r\n INSTALLED_APPS = [\r\n # outros apps\r\n 'server_files', # Seu app com os campos criptografados\r\n ]\r\n ```\r\n\r\n## Uso\r\n\r\n### Modelos\r\n\r\nAgora, voc\u00ea pode usar os campos criptografados em seus modelos Django da seguinte forma:\r\n\r\n```python\r\nfrom django.db import models\r\nfrom encrypted_fields.encrypted_fields import *\r\nfrom encrypted_fields.encrypted_files import *\r\n\r\nclass MeuModelo(models.Model):\r\n campo_inteiro = EncryptedIntegerField()\r\n campo_arquivo = EncryptedFileField(upload_to='arquivos/')\r\n campo_imagem = EncryptedImageField(upload_to='imagens/')\r\n```\r\n\r\n### Funcionalidade dos campos:\r\n\r\n- **`EncryptedIntegerField`**: Campo para armazenar valores inteiros criptografados.\r\n- **`EncryptedFileField`**: Campo para armazenar arquivos criptografados.\r\n- **`EncryptedImageField`**: Campo para armazenar imagens criptografadas.\r\n\r\nOs valores s\u00e3o criptografados automaticamente antes de serem salvos no banco de dados e descriptografados quando acessados.\r\n\r\n\r\n## Contribui\u00e7\u00e3o\r\n\r\nSinta-se \u00e0 vontade para contribuir! Para sugest\u00f5es ou melhorias, siga os seguintes passos:\r\n\r\n1. Fa\u00e7a um fork deste reposit\u00f3rio.\r\n2. Crie uma branch (`git checkout -b feature-nome-da-sua-feature`).\r\n3. Comite suas mudan\u00e7as (`git commit -am 'Adicionando nova funcionalidade'`).\r\n4. Envie para o reposit\u00f3rio remoto (`git push origin feature-nome-da-sua-feature`).\r\n5. Abra um Pull Request.\r\n\r\n## Licen\u00e7a\r\n\r\nEste projeto est\u00e1 licenciado sob a Licen\u00e7a MIT - veja o arquivo [LICENSE](LICENSE) para mais detalhes.\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Campos e storages criptografados para o Django com suporte a timestamp para evitar cache.",
"version": "0.1.12",
"project_urls": {
"Documentation": "https://github.com/D3NKYT0/django-encrypted-fields/wiki",
"Homepage": "https://denky.dev.br/django-encrypted-fields",
"Issue Tracker": "https://github.com/D3NKYT0/django-encrypted-fields/issues",
"Repository": "https://github.com/D3NKYT0/django-encrypted-fields"
},
"split_keywords": [
"django",
" encryption",
" fields",
" files",
" timestamp",
" cache"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "fbbf7403e8f23fac5aeee7c6ef6888c7345189b2a0176060cf92656df2586c77",
"md5": "a4bb361a316c5d2aeeb7656957fce0de",
"sha256": "ed1b16c4bb8c985dd1cd6a4aa9f1ac008784d4349f644c0312de39e072bf0ff3"
},
"downloads": -1,
"filename": "django_encrypted_fields_and_files-0.1.12-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a4bb361a316c5d2aeeb7656957fce0de",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 13845,
"upload_time": "2025-08-04T23:09:12",
"upload_time_iso_8601": "2025-08-04T23:09:12.738269Z",
"url": "https://files.pythonhosted.org/packages/fb/bf/7403e8f23fac5aeee7c6ef6888c7345189b2a0176060cf92656df2586c77/django_encrypted_fields_and_files-0.1.12-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "683cb2aef4d90aa20b2b6c3e485350062333e34770dbdecf8b5f31bf709f54b7",
"md5": "f8366cce7988ddb87752bea05e23614b",
"sha256": "c2402a7c71755a6c60d167e8f5b51f2f5f3662ed3a8f3bb3311026f63ed92bff"
},
"downloads": -1,
"filename": "django_encrypted_fields_and_files-0.1.12.tar.gz",
"has_sig": false,
"md5_digest": "f8366cce7988ddb87752bea05e23614b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 11907,
"upload_time": "2025-08-04T23:09:13",
"upload_time_iso_8601": "2025-08-04T23:09:13.927891Z",
"url": "https://files.pythonhosted.org/packages/68/3c/b2aef4d90aa20b2b6c3e485350062333e34770dbdecf8b5f31bf709f54b7/django_encrypted_fields_and_files-0.1.12.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-04 23:09:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "D3NKYT0",
"github_project": "django-encrypted-fields",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "django",
"specs": [
[
">=",
"5.0"
]
]
},
{
"name": "cryptography",
"specs": [
[
">=",
"41.0.5"
],
[
"<",
"45.0.0"
]
]
},
{
"name": "pillow",
"specs": [
[
">=",
"10.0.0"
]
]
},
{
"name": "setuptools",
"specs": [
[
">=",
"75.8.0"
]
]
},
{
"name": "pyopenssl",
"specs": [
[
">=",
"23.0.0"
],
[
"<",
"25.0.0"
]
]
}
],
"lcname": "django-encrypted-fields-and-files"
}