加密是對資訊進行編碼的過程,只有授權方才能訪問它。這一點至關重要,因為它可以安全地保護您不希望任何人看到或訪問的資料。在本文中,您將學習如何使用Python使用加密 庫對檔案或任何位元組物件,也包括字串物件進行加密。我們將使用對稱加密,這意味著用於加密資料的相同金鑰也可用於解密。那裡有很多加密演算法,我們將使用的庫是基於AES演算法構建的。
注意:瞭解加密和雜湊演算法之間的區別很重要 ,在加密中,一旦擁有金鑰,您就可以檢索原始資料,而在 雜湊函式中則不能,因此,它們被稱為單向加密。
讓我們從安裝加密開始:
pip3 install cryptography
開啟一個新的Python檔案,讓我們開始吧:
from cryptography.fernet import Fernet
生成金鑰
Fernet是對稱身份驗證密碼技術的實現,讓我們首先生成該金鑰並將其寫入檔案:
def write_key():
“””
Generates a key and save it into a file
“””
key = Fernet.generate_key()
with open(“key.key”, “wb”) as key_file:www.zpedu.com/
key_file.write(key)
generate_key()函式生成一個新的Fernet金鑰,您確實需要將其儲存在安全的地方,如果丟失了金鑰,您將不再能夠解密使用此金鑰加密的資料。
由於此金鑰是唯一的,因此我們不會在每次加密任何內容時生成金鑰,因此我們需要一個函式來為我們載入該金鑰:
def load_key():
“””
Loads the key from the current directory named key.key
“””
return open(“key.key”, “rb”).read()
字串加密
現在我們知道了如何獲取金鑰,讓我們從加密字串物件開始,只是為了讓您首先熟悉它。
生成金鑰並將其寫入檔案:
# generate and write a new key
write_key()
讓我們載入該金鑰:
# load the previously generated key
key = load_key()
一些訊息:
message = “some secret message”.encode()
我們需要對字串進行編碼,以將其轉換為適合加密的位元組,encode()方法使用utf-8編解碼器對該字串進行編碼。使用該鍵初始化Fernet類:
# initialize the Fernet class
f = Fernet(key)
加密訊息:
# encrypt the message
encrypted = f.encrypt(message)
f.encrypt()方法對傳遞的資料進行加密,這種加密的結果稱為“ Fernet令牌”,並具有強大的隱私性和真實性保證。
讓我們看看它的外觀:
# print how it looks
print(encrypted)
輸出: b’gAAAAABdjSdoqn4kx6XMw_fMx5YT2eaeBBCEue3N2FWHhlXjD6JXJyeELfPrKf0cqGaYkcY6Q0bS22ppTBsNTNw2fU5HVg-c-0o-KVqcYxqWAIG-LVVI_1U=’
解密:
decrypted_encrypted = f.decrypt(encrypted)
print(decrypted_encrypted)
b’some secret message’
的確是同一條資訊。
f.decrypt()方法解密Fernet令牌。成功解密後,這將返回原始明文作為結果,否則將引發異常。
本作品採用《CC 協議》,轉載必須註明作者和本文連結