Maison >développement back-end >Tutoriel Python >Comment améliorer la protection des données grâce à des techniques de cryptage avancées ?
Chiffrement à clé symétrique : Fernet
Python dispose d'une bibliothèque de cryptographie robuste offrant Fernet, un système de chiffrement 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. Générer une clé avec Fernet.generate_key() est recommandé.
<code class="python">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'</code>
Alternatives :
Obscurcissement : Si seule l'obscurité est nécessaire, base64 l'encodage peut suffire. Pour la sécurité des URL, utilisez urlsafe_b64encode().
<code class="python">import base64 obscured_message = base64.urlsafe_b64encode(b'Hello world!') # b'eNrzSM3...='</code>
Intégrité uniquement : HMAC peut fournir une garantie d'intégrité des données sans cryptage.
<code class="python">import hmac import hashlib key = secrets.token_bytes(32) signature = hmac.new(key, b'Data', hashlib.sha256).digest()</code>
AES- Cryptage GCM : AES-GCM fournit à la fois le cryptage et l'intégrité, sans remplissage.
<code class="python">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'</code>
Autres approches :
AES CFB : Semblable à CBC sans rembourrage.
<code class="python">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'</code>
AES ECB : Attention : non sécurisé ! Non recommandé pour les applications du monde réel.
<code class="python">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'</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!