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

DDD
Libérer: 2024-10-22 21:47:30
original
485 Les gens l'ont consulté

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>
Copier après la connexion

Cryptage :

<code class="python">from cryptography.fernet import Fernet

def encrypt(message: bytes, key: bytes) -> bytes:
    return Fernet(key).encrypt(message)</code>
Copier après la connexion

Déchiffrement :

<code class="python">from cryptography.fernet import Fernet

def decrypt(token: bytes, key: bytes) -> bytes:
    return Fernet(key).decrypt(token)</code>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

Exemple d'utilisation :

<code class="python">data = b"Hello world!"
obscured = obscure(data)
unobscured = unobscure(obscured)

print(unobscured.decode())  # Output: Hello world!</code>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!