在Python中,加密和解密可以通過多種方式實現(xiàn)。這里我將向您展示如何使用cryptography庫進(jìn)行簡單的加密和解密操作。cryptography庫是一個功能強大的加密庫,支持對稱加密和非對稱加密算法。
首先,確保您已經(jīng)安裝了cryptography庫。如果沒有,請使用以下命令安裝:
pip install cryptography
接下來,我們將使用Fernet對稱加密算法進(jìn)行加密和解密。以下是示例代碼:
from cryptography.fernet import Fernet
# 生成密鑰
def generate_key():
return Fernet.generate_key()
# 加密
def encrypt(message, key):
f = Fernet(key)
encrypted_message = f.encrypt(message.encode())
return encrypted_message
# 解密
def decrypt(encrypted_message, key):
f = Fernet(key)
decrypted_message = f.decrypt(encrypted_message).decode()
return decrypted_message
# 示例
key = generate_key()
message = "Hello, World!"
encrypted_message = encrypt(message, key)
print("Encrypted message:", encrypted_message)
decrypted_message = decrypt(encrypted_message, key)
print("Decrypted message:", decrypted_message)
在這個示例中,我們首先生成一個密鑰,然后使用該密鑰對消息進(jìn)行加密和解密。請注意,密鑰在加密和解密過程中必須保持一致。
除了對稱加密,您還可以使用非對稱加密算法,如RSA。以下是使用RSA進(jìn)行加密和解密的示例代碼:
from cryptography.hazmat.primitives.asymmetric import rsa, padding
from cryptography.hazmat.primitives import serialization, hashes
# 生成RSA密鑰對
def generate_rsa_key_pair():
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
)
public_key = private_key.public_key()
return private_key, public_key
# 加密
def encrypt_rsa(message, public_key):
encrypted_message = public_key.encrypt(
message.encode(),
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None,
)
)
return encrypted_message
# 解密
def decrypt_rsa(encrypted_message, private_key):
decrypted_message = private_key.decrypt(
encrypted_message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None,
)
)
return decrypted_message.decode()
# 示例
private_key, public_key = generate_rsa_key_pair()
message = "Hello, World!"
encrypted_message = encrypt_rsa(message, public_key)
print("Encrypted message:", encrypted_message)
decrypted_message = decrypt_rsa(encrypted_message, private_key)
print("Decrypted message:", decrypted_message)
在這個示例中,我們首先生成一個RSA密鑰對,然后使用公鑰進(jìn)行加密,私鑰進(jìn)行解密。請注意,RSA加密通常用于加密較小的數(shù)據(jù),因為加密較大的數(shù)據(jù)可能會導(dǎo)致性能下降。對于大文件加密,通常建議使用對稱加密算法,然后使用RSA加密對稱密鑰。