Maison >développement back-end >Tutoriel Python >Comment chiffrer et masquer des chaînes en toute sécurité à l'aide de mots de passe en Python ?
Avertissement :
Le cryptage est un aspect essentiel de la sécurité des données, et il doivent être manipulés avec le plus grand soin. Une mauvaise mise en œuvre du chiffrement peut rendre vos données vulnérables aux attaques. Pensez à utiliser des bibliothèques bien établies et à suivre les meilleures pratiques pour un cryptage sécurisé.
La bibliothèque de cryptographie de Python fournit une solution conviviale et sécurisée pour crypter des chaînes à l'aide d'un mot de passe. Fernet est une recette intégrée à la cryptographie qui simplifie le processus de cryptage.
Génération d'une clé :
Pour utiliser Fernet, vous devez d'abord générer une clé secrète. Il est crucial de garder cette clé secrète.
<code class="python">from cryptography.fernet import Fernet key = Fernet.generate_key() # Store this securely</code>
Cryptage :
<code class="python">from cryptography.fernet import Fernet def encrypt(message: bytes, key: bytes) -> bytes: return Fernet(key).encrypt(message)</code>
Déchiffrement :
<code class="python">from cryptography.fernet import Fernet def decrypt(token: bytes, key: bytes) -> bytes: return Fernet(key).decrypt(token)</code>
Exemple d'utilisation :
<code class="python">message = "John Doe" encrypted_token = encrypt(message.encode(), key) decrypted_message = decrypt(encrypted_token, key).decode() print(decrypted_message) # Output: John Doe</code>
Si vous devez masquer des données plutôt que de les chiffrer, vous pouvez utiliser le codage base64 :
<code class="python">import base64 def obscure(data: bytes) -> bytes: return base64.b64encode(data) def unobscure(obscured: bytes) -> bytes: return base64.b64decode(obscured)</code>
Exemple d'utilisation :
<code class="python">data = b"Hello world!" obscured = obscure(data) unobscured = unobscure(obscured) print(unobscured.decode()) # Output: Hello world!</code>
Si vous devez garantir l'intégrité des données sans cryptage, vous pouvez utiliser les signatures HMAC :
<code class="python">import hmac import hashlib def sign(data: bytes, key: bytes) -> bytes: return hmac.new(key, data, hashlib.sha256).digest() def verify(signature: bytes, data: bytes, key: bytes) -> bool: return hmac.compare_digest(hmac.new(key, data, hashlib.sha256).digest(), signature)</code>
Exemple d'utilisation :
<code class="python">data = b"Hello world!" key = secrets.token_bytes(32) signature = sign(data, key) if verify(signature, data, key): print("Signature is valid") else: print("Signature is invalid")</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!