Python 的密碼學庫是一個用於加密和解密資料的綜合工具包。要使用密碼加密字串,您可以利用 Fernet 類,該類提供強大的加密功能,並包括時間戳記、HMAC 簽章和 Base64 編碼等基本功能。
<code class="python">from cryptography.fernet import Fernet, FernetException password = 'mypass' fernet = Fernet(password.encode()) encrypted_message = fernet.encrypt(b'John Doe') decrypted_message = fernet.decrypt(encrypted_message) print(encrypted_message) # Encrypted string print(decrypted_message.decode()) # 'John Doe'</code>
Fernet 透過應用多層加密並透過 HMAC 簽章確保訊息完整性來確保加密資料的安全。
直接在 Fernet 中使用密碼很方便,使用密碼產生金鑰更安全。此方法涉及使用密鑰派生函數從密碼和鹽派生密鑰。
<code class="python">import secrets from cryptography.fernet import Fernet from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC backend = default_backend() salt = secrets.token_bytes(16) # Generate a unique salt password = 'mypass'.encode() # Convert password to bytes kdf = PBKDF2HMAC( algorithm=hashes.SHA256(), length=32, salt=salt, iterations=100000, backend=backend ) key = b64e(kdf.derive(password)) # Derive the secret key fernet = Fernet(key) encrypted_message = fernet.encrypt(b'John Doe')</code>
此方法透過使用從密碼派生的強密鑰為加密過程添加額外的保護層來增強安全性
除了Fernet,您可以根據您的特定要求考慮替代方案:
Base64 模糊:對於基本混淆,可以使用base64編碼,無需加密。但是,這並不能提供任何實際的安全性,而只是模糊性。
HMAC 簽章: 如果您的目標是資料完整性,請使用 HMAC 簽章來確保資料未被竄改。
AES-GCM 加密: AES-GCM 使用 Galois/Counter 模式區塊加密來提供加密和完整性保證,類似於 Fernet,但沒有使用者友好的功能。
以上是如何在 Python 中使用密碼安全地加密和解密字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!