Metadata-Version: 2.2
Name: django-encrypted-fields-and-files
Version: 0.1.1
Summary: Campos e storages criptografados para o Django.
Home-page: https://github.com/D3NKYT0/django-encrypted-fields
Author: Denky
Author-email: contato@denky.dev.br
Project-URL: Source, https://github.com/D3NKYT0/django-encrypted-fields
Project-URL: Homepage, https://denky.dev.br/django-encrypted-fields
Project-URL: Documentation, https://github.com/D3NKYT0/django-encrypted-fields/wiki
Project-URL: Issue Tracker, https://github.com/D3NKYT0/django-encrypted-fields/issues
Classifier: Framework :: Django
Classifier: Programming Language :: Python
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Django>=4.2
Requires-Dist: cryptography>=41.0.5
Requires-Dist: pillow>=10.0.0
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: project-url
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# 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.
