Maison >développement back-end >Tutoriel Python >Comment chiffrer et déchiffrer des chaînes en toute sécurité à l'aide de mots de passe en Python ?
La bibliothèque de cryptographie de Python est une boîte à outils complète pour crypter et déchiffrer des données. Pour chiffrer des chaînes à l'aide d'un mot de passe, vous pouvez tirer parti de la classe Fernet, qui fournit un cryptage robuste et inclut des fonctionnalités essentielles telles qu'un horodatage, une signature HMAC et un encodage base64.
<code class="python">from cryptography.fernet import Fernet, FernetException password = 'mypass' fernet = Fernet(password.encode()) encrypted_message = fernet.encrypt(b'John Doe') decrypted_message = fernet.decrypt(encrypted_message) print(encrypted_message) # Encrypted string print(decrypted_message.decode()) # 'John Doe'</code>
Fernet protège les données cryptées en appliquant plusieurs couches de cryptage et en garantissant l'intégrité des messages avec une signature HMAC.
Bien que l'utilisation d'un mot de passe directement avec Fernet soit pratique , il est plus sûr de générer une clé à l'aide d'un mot de passe. Cette approche consiste à dériver une clé secrète du mot de passe et du sel à l'aide d'une fonction de dérivation de clé.
<code class="python">import secrets from cryptography.fernet import Fernet from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC backend = default_backend() salt = secrets.token_bytes(16) # Generate a unique salt password = 'mypass'.encode() # Convert password to bytes kdf = PBKDF2HMAC( algorithm=hashes.SHA256(), length=32, salt=salt, iterations=100000, backend=backend ) key = b64e(kdf.derive(password)) # Derive the secret key fernet = Fernet(key) encrypted_message = fernet.encrypt(b'John Doe')</code>
Cette méthode améliore la sécurité en ajoutant une couche de protection supplémentaire au processus de cryptage avec une clé forte dérivée de votre mot de passe. et un sel unique.
Au-delà de Fernet, vous pouvez envisager des alternatives en fonction de vos besoins spécifiques :
Obscurisation Base64 : Pour les bases obscurcissement, le codage base64 peut être utilisé sans cryptage. Cependant, cela n'offre aucune sécurité réelle, juste l'obscurité.
Signature HMAC : Si votre objectif est l'intégrité des données, utilisez les signatures HMAC pour vous assurer que les données n'ont pas été falsifiées.
Cryptage AES-GCM : AES-GCM utilise le cryptage par blocs Galois/Counter Mode pour fournir à la fois des garanties de cryptage et d'intégrité, similaires à Fernet mais sans ses fonctionnalités conviviales.
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!