Criptografia Simétrica em Python: Usando Fernet para Proteger Dados Sensíveis
Criptografia Simétrica em Python: Usando Fernet para Proteger Dados Sensíveis
A criptografia de dados sensíveis em repouso ou em trânsito é essencial para garantir a confidencialidade das informações na sua aplicação. Utilizando a biblioteca
cryptography e o módulo Fernet, você implementa criptografia simétrica (onde a mesma chave é usada para codificar e decodificar) com garantia de segurança e proteção contra adulterações.Python
from cryptography.fernet import Fernet
def exemplo_criptografia():
# 1. Gera uma chave simétrica segura (guarde esta chave em local seguro!)
chave = Fernet.generate_key()
fernet = Fernet(chave)
mensagem_original = "SuaSenhaOuDadoSensivel123"
# 2. Criptografa o texto (exige conversão para bytes)
texto_bytes = mensagem_original.encode('utf-8')
mensagem_criptografada = fernet.encrypt(texto_bytes)
# 3. Descriptografa o texto usando a mesma chave
mensagem_descriptografada_bytes = fernet.decrypt(mensagem_criptografada)
mensagem_descriptografada = mensagem_descriptografada_bytes.decode('utf-8')
# Exibição dos resultados
print(f"Texto Original: {mensagem_original}")
print(f"Texto Criptografado (token): {mensagem_criptografada.decode('utf-8')}")
print(f"Texto Descriptografado: {mensagem_descriptografada}")
# Exemplo prático de uso
if __name__ == "__main__":
exemplo_criptografia()
Pontos-chave
- Algoritmo de Criptografia Forte: O
Fernetutiliza a especificação AES-128 no modo CBC com autenticação HMAC (SHA256), garantindo que a mensagem não possa ser lida nem adulterada sem a chave correta. - Manipulação de Bytes: O método
encrypt()opera estritamente sobre sequências de bytes (bytes). É obrigatório converter strings para bytes com.encode('utf-8')antes de criptografar e usar.decode('utf-8')após a descriptografia. - Gerenciamento de Chaves: Perder a chave gerada por
Fernet.generate_key()significa perder o acesso permanente aos dados criptografados. Em aplicações reais, armazene a chave em variáveis de ambiente ou em um gerenciador de segredos (Secret Manager). - Tratamento de Exceções: Se a chave informada na descriptografia estiver errada ou os dados tiverem sido corrompidos, o método
.decrypt()lançará a exceçãocryptography.fernet.InvalidToken.

Comentários
Postar um comentário