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 ?

Comment chiffrer et masquer des chaînes en toute sécurité à l'aide de mots de passe en Python ?

DDD
DDDoriginal
2024-10-22 21:47:30583parcourir

How to Safely Encrypt and Obscure Strings Using Passwords in Python?

Chiffrement de chaînes avec un mot 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é.

Utilisation d'une bibliothèque de cryptographie : Fernet

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>

Obscurcissement des données

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>

Vérification de l'intégrité des données

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!

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