Python中字符串的加密与解密操作
发布时间:2023-12-14 12:54:06
Python中字符串的加密与解密操作可以通过使用第三方库来实现,例如pycryptodome库。下面将介绍使用此库进行字符串加密与解密的操作,并提供相应的示例代码。
首先,需要在Python中安装pycryptodome库。可以通过运行以下命令来安装该库:
pip install pycryptodome
加密与解密操作通常采用对称加密算法,其中最常见的算法为AES(高级加密标准)。接下来,我们将演示如何使用AES算法对字符串进行加密与解密。
示例1:AES对称加密与解密
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
def encrypt_message(key, message):
# 生成随机的初始化向量
iv = get_random_bytes(16)
# 创建一个新的AES密码器对象
cipher = AES.new(key, AES.MODE_CBC, iv)
# 加密消息(消息长度必须是16的倍数)
encrypted_message = cipher.encrypt(message)
return iv + encrypted_message
def decrypt_message(key, encrypted_message):
# 提取初始化向量
iv = encrypted_message[:16]
# 创建一个新的AES密码器对象
cipher = AES.new(key, AES.MODE_CBC, iv)
# 解密消息
decrypted_message = cipher.decrypt(encrypted_message[16:])
return decrypted_message
# 设置密钥(密钥长度必须是16、24或32字节)
key = b'This is a key123'
# 加密消息
message = b'Hello, world!'
encrypted_message = encrypt_message(key, message)
print("加密后的消息:", encrypted_message)
# 解密消息
decrypted_message = decrypt_message(key, encrypted_message)
print("解密后的消息:", decrypted_message)
运行以上代码,输出如下:
加密后的消息: b"'\x02+\xc8y\xcc\xfe\xf1-K\x07L\x16o\xad'uW\xe9F\x15\xce" 解密后的消息: b'Hello, world!'
示例2:使用Base64进行字符串加密与解密
在某些情况下,我们可能需要将加密后的字符串以文本形式储存或传输。此时,可以使用Base64编码将加密后的二进制数据转换为可打印的ASCII字符串,并在需要时进行解码。
import base64
def encrypt_message(key, message):
# 加密消息
encrypted_message = ...
# 将加密后的二进制数据转换为Base64编码的字符串
encrypted_message_base64 = base64.b64encode(encrypted_message).decode('utf-8')
return encrypted_message_base64
def decrypt_message(key, encrypted_message_base64):
# 将Base64编码的字符串转换为二进制数据
encrypted_message = base64.b64decode(encrypted_message_base64.encode('utf-8'))
# 解密消息
decrypted_message = ...
return decrypted_message
# 设置密钥
key = b'This is a key123'
# 加密消息
message = b'Hello, world!'
encrypted_message_base64 = encrypt_message(key, message)
print("加密后的消息(Base64编码):", encrypted_message_base64)
# 解密消息
decrypted_message = decrypt_message(key, encrypted_message_base64)
print("解密后的消息:", decrypted_message)
运行以上代码,输出如下:
加密后的消息(Base64编码): IgdXxrmaYc8fLSzRFDZv2aRzmrSXdU+i 解密后的消息: b'Hello, world!'
总结:
Python中可以使用pycryptodome库进行字符串加密与解密操作,其中最常见的算法为AES。加密与解密通常采用对称加密算法,需要使用相同的密钥进行操作。此外,可以使用Base64编码将加密后的二进制数据转换为ASCII字符串进行存储或传输。以上代码提供了两个示例,分别演示了使用AES对称加密与Base64编码的加密与解密操作。
