Python 加密函數(shù)可以通過使用標(biāo)準(zhǔn)庫中的 cryptography
模塊或第三方庫如 pycryptodome
來處理數(shù)據(jù)。以下是使用這些庫進(jìn)行加密和解密的示例:
cryptography
庫首先,安裝 cryptography
庫:
pip install cryptography
然后,可以使用 Fernet 對稱加密:
from cryptography.fernet import Fernet
# 生成密鑰
key = Fernet.generate_key()
cipher_suite = Fernet(key)
# 加密
data = "Hello, World!"
encrypted_data = cipher_suite.encrypt(data.encode())
print("Encrypted data:", encrypted_data)
# 解密
decrypted_data = cipher_suite.decrypt(encrypted_data).decode()
print("Decrypted data:", decrypted_data)
pycryptodome
庫首先,安裝 pycryptodome
庫:
pip install pycryptodome
然后,可以使用 AES 對稱加密:
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad
import base64
# 生成密鑰
key = get_random_bytes(16) # AES-128 需要 16 字節(jié)密鑰
cipher_suite = AES.new(key, AES.MODE_CBC)
# 加密
data = "Hello, World!"
iv = cipher_suite.iv
encrypted_data = cipher_suite.encrypt(pad(data.encode(), AES.block_size))
encrypted_data = base64.b64encode(iv + encrypted_data)
print("Encrypted data:", encrypted_data)
# 解密
decoded_data = base64.b64decode(encrypted_data)
iv = decoded_data[:AES.block_size]
encrypted_data = decoded_data[AES.block_size:]
cipher_suite = AES.new(key, AES.MODE_CBC, iv)
decrypted_data = unpad(cipher_suite.decrypt(encrypted_data), AES.block_size).decode()
print("Decrypted data:", decrypted_data)
請注意,密鑰和初始化向量(IV)應(yīng)妥善保管,不要泄露給未經(jīng)授權(quán)的人員。在實際應(yīng)用中,密鑰和 IV 的生成和管理應(yīng)該更加嚴(yán)格和安全。