歡迎來到下一個pikoTutorial!
在先前的文章中,我們學習如何使用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位元組長。
初學者須知: 請記住,salt對於解密資料是必須的!
以上是使用Python的金鑰導出函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!