Maison >développement back-end >Tutoriel Python >Comment améliorer la protection des données grâce à des techniques de cryptage avancées ?

Comment améliorer la protection des données grâce à des techniques de cryptage avancées ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-22 22:28:03935parcourir

How to Enhance Data Protection with Advanced Encryption Techniques?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn