Cryptage à clé symétrique : Fernet
Python dispose d'une bibliothèque de cryptographie robuste offrant Fernet, un système de cryptage sécurisé conforme aux meilleures pratiques. Fernet utilise le cryptage AES CBC, la signature HMAC ainsi que les informations de version et d'horodatage pour protéger les données. Il est recommandé de générer une clé avec 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'
Alternatives :
Obscurcissement : Si seulement l'obscurité est nécessaire, l'encodage base64 peut suffire. Pour la sécurité des URL, utilisez urlsafe_b64encode().
import base64
obscured_message = base64.urlsafe_b64encode(b'Hello world!') # b'eNrzSM3...='
Intégrité uniquement : HMAC peut fournir une garantie d'intégrité des données sans cryptage.
import hmac
import hashlib
key = secrets.token_bytes(32)
signature = hmac.new(key, b'Data', hashlib.sha256).digest()
Cryptage AES-GCM : AES-GCM fournit à la fois le cryptage et l'intégrité, sans remplissage.
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'
Autres approches :
AES CFB : Similaire à CBC sans remplissage.
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 : Attention : non sécurisé ! Non recommandé pour les applications du monde réel.
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'
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3