# Índice

1. [Quando integrar com criptografia?](#quando-integrar)
2. [A integração é segura?](#seguranca)
3. [Implementação da criptografia simétrica](#criptografia)
4. [Integração com a Infosimples](#integracao)

## [Quando integrar com criptografia?](#quando-integrar)
A integração com criptografia é indicada quando você deseja que os parâmetros enviados para a API da Infosimples não sejam transmitidos ou persistidos na sua forma original.

Esta integração permite que você criptografe os parâmetros antes de enviá-los para a API da Infosimples.


## [A integração é segura?](#seguranca)
A integração é significativamente segura. Destacamos os seguintes aspectos:

- A comunicação com a API da Infosimples ocorre exclusivamente via HTTPS (conexão encriptada com TLS), o que garante a integridade dos dados transmitidos (os dados não podem ser modificados durante a comunicação) e que os dados somente podem ser compreendidos pela sua integração e pelo servidor da Infosimples;
- Os parâmetros são encriptados com algoritmo AES (chave de 256 bits e modo GCM) antes de serem transmitidos via HTTPS, adicionando mais uma camada de segurança, autenticação e integridade dos dados;
- O servidor da Infosimples decripta os parâmetros em memória imediatamente antes de usá-los e, logo depois de serem usados, eles são removidos da memória do processo que roda no servidor da Infosimples;
- Os parâmetros não são persistidos em estruturas de armazenamento nem em bancos de dados em nenhum momento pela Infosimples, seja em sua forma original ou encriptada;
- As únicas informações associadas aos parâmetros persistidas são seus hashes MD5, de forma que seja possível validar que os parâmetros foram recebidos corretamente pelo servidor da Infosimples, sem comprometer a segurança da integração.


## [Implementação da criptografia simétrica](#criptografia)
Para transmitir parâmetros encriptados é necessário usar o algoritmo AES com chave de 256 bits e modo GCM.

Para garantir que o seu algoritmo de criptografia simétrica está compatível com o esperado pela Infosimples, preparamos um exemplo abaixo.

### Exemplos de criptografia em diferentes linguagens de programação
> Exemplos baseados no projeto [AesBridge](https://github.com/mervick/aes-bridge).


#### Python
```python
# Testado com: Python 3.10.19, Python 3.14.0
# pip install aes-bridge
import aes_bridge

criptogram = aes_bridge.encrypt('EXEMPLO_DADO', 'INFORME_A_CHAVE_DE_CRIPTOGRAFIA').decode("ascii").replace("+", "-").replace("/", "_").replace("=", "")
```



## [Integração com a Infosimples](#integracao)
Qualquer parâmetro específico de uma API da Infosimples pode ser enviado em sua forma encriptada usando o prefixo `enc_`.

Por exemplo, o parâmetro `cnpj` pode ser enviado encriptado como `enc_cnpj`.

Se for encriptar um parâmetro cujo valor é um arquivo binário, você deve primeiro converter o conteúdo do arquivo binário para uma `string` codificada em Base64 e em seguida aplicar a criptografia.


## Precisa de ajuda?
Ainda tem alguma dúvida ou precisa de ajuda na sua integração? Entre em contato em [suporte@infosimples.com.br](mailto:suporte@infosimples.com.br) e receba ajuda da nossa equipe técnica altamente qualificada.
