Cifrado de clave simétrica: Fernet
Python tiene una sólida biblioteca de criptografía que ofrece Fernet, un esquema de cifrado seguro y con las mejores prácticas. Fernet emplea cifrado AES CBC, firma HMAC e información de versión y marca de tiempo para proteger los datos. Se recomienda generar una clave con 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:
Oscurecimiento: Si solo Se necesita oscuridad, la codificación base64 puede ser suficiente. Para seguridad de URL, use urlsafe_b64encode().
import base64
obscured_message = base64.urlsafe_b64encode(b'Hello world!') # b'eNrzSM3...='
Solo integridad: HMAC puede proporcionar garantía de integridad de datos sin cifrado.
import hmac
import hashlib
key = secrets.token_bytes(32)
signature = hmac.new(key, b'Data', hashlib.sha256).digest()
Cifrado AES-GCM: AES-GCM proporciona cifrado e integridad, sin relleno.
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'
Otros enfoques:
AES CFB: Similar a CBC sin relleno.
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: Precaución: ¡Inseguro! No recomendado para aplicaciones del 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'
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3