如何在 Python 中加密和解密資料


介紹

什麼是加密?加密處理將明文轉換為密文,這稱為資料加密;並將密文轉換回明文,這稱為資料解密。

我們將使用 **cryptography 包中的 fernet 模組** 來使用 Python 加密和解密資料。在使用 fernet 模組時,會生成一個唯一的金鑰,沒有它,您將無法讀取或操作加密資料。

現在您已經瞭解了我們將要處理的內容,讓我們開始吧。

入門

cryptography 模組沒有與 Python 打包在一起,這意味著您需要使用 pip 包管理器來安裝它。為此,啟動您的終端並輸入以下程式碼。

pip install cryptography

下載並安裝軟體包後,您可以匯入其模組。

我們將使用 fernet 模組來加密和解密資料。因此,讓我們將其匯入 Python 指令碼中。

from cryptography.fernet import Fernet

**注意** - 確保大寫正確。

您已準備好開始編寫您的指令碼了。

生成金鑰

為了開始加密資料,您必須首先建立一個 **fernet 金鑰**。

key = Fernet.generate_key()
f = Fernet(key)

在上面的程式碼行中,我們使用 generate_key() 方法生成了一個金鑰,然後在下一行中將其分配給變數“f”。

就是這樣,您現在有一個儲存在變數中,準備使用的金鑰了。

如果需要,我們可以列印金鑰並將其儲存。列印時請務必使用 decode 函式。

print(key.decode())

輸出

Bq64GE−−93K1RVro4go1frN−8twBSvXdbCPSPLIKz9U=

加密資料

為了使用上述金鑰加密資料,您必須使用 encrypt 方法。

encrypted_data = f.encrypt(b"This message is being encrypted and cannot be seen!")

就是這樣,上面的句子已被加密。

要檢視加密的訊息,您必須列印它。

print(encrypted_data)

輸出

b'gAAAAABgILy91p_wqMntdT3mDkh0IBXSLjuBMQAfnGZAFkZCX1U6Q7TU2PthgFBwVz0QbKXpuNTHRzAgbdDV4zfuuzkGCXqVD--xJdkTycKH2iurC_oqHySLc9xJEXz93LkhTbKUa5HCxfJtB-Um_YkxqjclftXXZQ=='

**注意** - 我們在句子之前使用了 b 以將其轉換為位元組格式。您也可以選擇使用 encode() 方法。

解密資料

現在您有了密文,讓我們看看如何將其轉換回可讀的明文。

我們可以使用 fernet 模組中的 decrypt 方法來實現解密。

decrypted_data = f.decrypt(encrypted_data) # f is the variable that has the value of the key.
print(decrypted_data)

輸出

b'This message is being encrypted and cannot be seen!'

**注意** - 如果您檢視上面的輸出,您會注意到在列印的明文之前有 b',這是因為加密資料正在轉換回位元組格式。為了只獲取明文,我們需要使用 decode 函式。

print(decrypted_data.decode())

輸出

This message is being encrypted and cannot be seen!

注意 - 您可以使用相同的金鑰加密和解密資料。也就是說,如果您列印金鑰的值並儲存它。您可以透過將其分配給變數來使用相同的金鑰。示例 ->

f = Fernet(Bq64GE--93K1RVro4go1frN-8twBSvXdbCPSPLIKz9U=) # Value of an actual key is given.

示例

from cryptography.fernet import Fernet
key = Fernet.generate_key()
print("Key : ", key.decode())
f = Fernet(key)
encrypted_data = f.encrypt(b"This message is being encrypted and cannot be seen!")
print("After encryption : ", encrypted_data)
decrypted_data = f.decrypt(encrypted_data)
print(decrypted_data)
print("After decryption : ", decrypted_data.decode())

輸出

Key : u4dM7xw8sNNU3Rm_lwDbixudWSeaM0Z4TTDdQNKsouI=
After encryption : b'gAAAAABgIL3_qbfM_oMgQn653gpk6a7hqxXiR0dl0vrmOmqnr5b6MqrsjGkK1IknxMLLtOCq6_YlX4x3nBedbZqtCqy4os55pttrl-pBO6-dJf6kVP50IpIaKSXbpAsuWl4h_2o_E-4YEqZ5kkgxWrwnqojmkMyuSQ=='
b'This message is being encrypted and cannot be seen!'
After decryption : This message is being encrypted and cannot be seen!

結論

您現在已經學會了如何使用 Python 中的 cryptography 包加密和解密資料。

您甚至可以將金鑰儲存為 .txt 檔案,然後檢索它來加密和儲存密碼或從資料庫中解密密碼以驗證其是否匹配。您可以使用它在各種其他情況下,無論是小型專案還是大型專案。

有關 cryptography 模組的更多資訊,您可以閱讀其官方文件 - https://pypi.org/project/cryptography/

更新於: 2021年2月11日

17K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

開始
廣告