Heim >Backend-Entwicklung >Python-Tutorial >Schlüsselableitungsfunktion mit Python

Schlüsselableitungsfunktion mit Python

Barbara Streisand
Barbara StreisandOriginal
2025-01-16 18:12:11789Durchsuche

Key derivation function with Python

Willkommen zum nächsten pikoTutorial!

Im vorherigen Artikel haben wir gelernt, wie man Python für die symmetrische Datenverschlüsselung verwendet. Im letzten Beispiel geht es darum, ein vom Benutzer eingegebenes Passwort direkt in einen Verschlüsselungsschlüssel umzuwandeln. Obwohl es funktioniert, ist es keine empfohlene Vorgehensweise. Heute lernen Sie die empfohlene Methode kennen, die Schlüsselableitungsfunktion.

Schlüsselableitungsfunktion

Unten finden Sie ein erweitertes Beispiel für die Verwendung der Schlüsselableitungsfunktion PBKDF2HMAC in 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>

Auf diese Weise erstellte Schlüssel sind nicht nur sicherer, sie erfordern auch nicht mehr, dass Klartext-Passwörter genau 32 Byte lang sein müssen.

Hinweis für Anfänger: Denken Sie daran, dass Salz zum Entschlüsseln von Daten notwendig ist!

Das obige ist der detaillierte Inhalt vonSchlüsselableitungsfunktion mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn