首頁 > 後端開發 > Python教學 > 使用Python進行對稱資料加密

使用Python進行對稱資料加密

Susan Sarandon
發布: 2025-01-04 10:58:35
原創
503 人瀏覽過

Symmetric data encryption with Python

歡迎來到下一個 pikoTutorial !

在 Python 中執行對稱加密的最簡單方法之一是使用加密模組中的 Fernet 演算法。讓我們使用命令安裝它:

pip install cryptography
登入後複製

有了可用的加密模組,讓我們來寫第一個加密腳本:

# import Fernet
from cryptography.fernet import Fernet
# Generate a key
key = Fernet.generate_key()
# Create a Fernet instance providing the generated key
fernet = Fernet(key)
# Encrypt the data
data = b'Some secret data'
encrypted_data = fernet.encrypt(data)
# Decrypt the data
decrypted_data = fernet.decrypt(encrypted_data)
print(f"Decrypted text: {decrypted_data.decode()}")
登入後複製

初學者註意:加密解密資料時都需要金鑰,因此您不能每次都產生新金鑰。加密資料後,您需要儲存金鑰,但因為它是允許您解密資料的東西,所以請記住以某種安全的方式儲存它!

上例中產生的金鑰由隨機位元組組成。此類金鑰非常安全,但通常您需要基於密碼的加密 - 我所說的密碼是指一些易於人類理解並由用戶作為輸入動態提供的短語。下面您可以找到 Python 程式碼,展示如何從使用者取得密碼作為輸入以及如何將其轉換為加密金鑰:

# import utility for Base64 encoding
import base64
# import Fernet
from cryptography.fernet import Fernet
# import getpass for secure input reading
from getpass import getpass
# read plain text password
plain_text_password: str = getpass(prompt='Password: ')
# Fernet requires 32 byte key, so the password also must have 32 characters
if len(plain_text_password) != 32:
    raise RuntimeError(f'Password length must be equal 32!')
# Encode plain text password to ASCII bytes
password_ascii: bytes = plain_text_password.encode('ascii')
# Fernet requires key to be url-safe base64-encoded
key: bytes = base64.urlsafe_b64encode(password_ascii)
# Create a Fernet instance providing the generated key
fernet = Fernet(key)
# Encrypt the data
data = b'Some secret data'
encrypted_data = fernet.encrypt(data)
# Decrypt the data
decrypted_data = fernet.decrypt(encrypted_data)
print(f"Decrypted text: {decrypted_data.decode()}")
登入後複製

進階說明:本 pikoTutorial 重點介紹如何使用 Fernet 進行對稱加密,因此它簡化了加密金鑰的創建。在實踐中,當您需要根據使用者提供的密碼建立加密金鑰時,您應該使用金鑰派生函數,例如 PBKDF2HMAC。

以上是使用Python進行對稱資料加密的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板