Maison > développement back-end > Tutoriel Python > Fonction de dérivation de clé avec Python

Fonction de dérivation de clé avec Python

Barbara Streisand
Libérer: 2025-01-16 18:12:11
original
789 Les gens l'ont consulté

Key derivation function with Python

Bienvenue dans le prochain tutoriel piko !

Dans l'article précédent, nous avons appris à utiliser Python pour le cryptage symétrique des données. Le dernier exemple concerne la conversion directe d’un mot de passe fourni par l’utilisateur en clé de cryptage. Même si cela fonctionne, ce n'est pas une pratique recommandée. Aujourd'hui, vous apprendrez la méthode recommandée, la fonction de dérivation de clé.

Fonction de dérivation de clé

Vous trouverez ci-dessous un exemple détaillé de la façon d'utiliser la fonction de dérivation de clé PBKDF2HMAC en Python :

<code class="language-python"># 导入Base64编码的实用程序
import base64
# 导入Fernet
from cryptography.fernet import Fernet
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.hazmat.primitives import hashes
# 导入getpass用于安全输入读取
from getpass import getpass
# 读取纯文本密码
plain_text_password: str = getpass(prompt='密码:')
# 将密码转换为字节
password_bytes = plain_text_password.encode('utf-8')
# 演示的一些salt值,在实践中使用安全的随机值
salt = b'\x00' * 16
# 使用PBKDF2HMAC从密码派生安全密钥
kdf = PBKDF2HMAC(
    algorithm=hashes.SHA256(),
    length=32,
    salt=salt,
    iterations=100000
)
# 使用Base64编码派生的密钥
key = base64.urlsafe_b64encode(kdf.derive(password_bytes))
# 使用派生的密钥创建一个Fernet实例
fernet = Fernet(key)
# 要加密的数据
data = b'一些秘密数据'
# 加密数据
encrypted_data = fernet.encrypt(data)
# 解密数据
decrypted_data = fernet.decrypt(encrypted_data)
# 打印解密后的数据
print(f"解密文本:{decrypted_data.decode()}")</code>
Copier après la connexion

Non seulement les clés créées de cette manière sont plus sécurisées, mais elles ne nécessitent plus que les mots de passe en texte brut mesurent exactement 32 octets.

Remarque pour les débutants : N'oubliez pas que le sel est nécessaire pour décrypter les données !

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.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal