欢迎访问宙启技术站
智能推送

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编码的加密与解密操作。