ホームページ >バックエンド開発 >Python チュートリアル >Pythonによる鍵導出関数
次の piko チュートリアルへようこそ!
前の記事では、対称データ暗号化に Python を使用する方法を学びました。最後の例は、ユーザーが指定したパスワードを暗号化キーに直接変換する方法です。効果はありますが、推奨される方法ではありません。今日は、推奨される方法であるキー導出関数を学びます。
以下に、Python で PBKDF2HMAC キー導出関数を使用する方法の拡張例を示します。
<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>
この方法で作成されたキーの安全性が高まるだけでなく、プレーン テキストのパスワードの長さがちょうど 32 バイトである必要もなくなりました。
初心者向けの注意: データを復号化するにはソルトが必要であることに注意してください。
以上がPythonによる鍵導出関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。