Criptografia de chave simétrica: Fernet
Python tem uma biblioteca de criptografia robusta que oferece Fernet, um esquema de criptografia seguro e de melhores práticas. Fernet emprega criptografia AES CBC, assinatura HMAC e informações de versão e carimbo de data/hora para proteger os dados. É recomendado gerar uma chave com Fernet.generate_key().
from cryptography.fernet import Fernet
key = Fernet.generate_key()
message = 'John Doe'
token = Fernet(key).encrypt(message.encode())
decrypted_message = Fernet(key).decrypt(token).decode() # 'John Doe'
Alternativas:
Ofuscando: Se ao menos a obscuridade é necessária, a codificação base64 pode ser suficiente. Para segurança de URL, use urlsafe_b64encode().
import base64
obscured_message = base64.urlsafe_b64encode(b'Hello world!') # b'eNrzSM3...='
Apenas integridade: HMAC pode fornecer garantia de integridade de dados sem criptografia.
import hmac
import hashlib
key = secrets.token_bytes(32)
signature = hmac.new(key, b'Data', hashlib.sha256).digest()
Criptografia AES-GCM: AES-GCM fornece criptografia e integridade, sem preenchimento.
import base64
key = secrets.token_bytes(32)
ciphertext = aes_gcm_encrypt(b'Data', key) # base64-encoded ciphertext and tag
decrypted_data = aes_gcm_decrypt(ciphertext, key) # b'Data'
Outras abordagens:
AES CFB: Semelhante ao CBC sem preenchimento.
import base64
key = secrets.token_bytes(32)
ciphertext = aes_cfb_encrypt(b'Data', key) # base64-encoded ciphertext and IV
decrypted_data = aes_cfb_decrypt(ciphertext, key) # b'Data'
AES ECB: Cuidado: Inseguro! Não recomendado para aplicações do mundo real.
import base64
key = secrets.token_bytes(32)
ciphertext = aes_ecb_encrypt(b'Data', key) # base64-encoded ciphertext
decrypted_data = aes_ecb_decrypt(ciphertext, key) # b'Data'
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3