Maison >développement back-end >Tutoriel Python >Fonction de dérivation de clé avec 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é.
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>
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!