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

Python中使用MODE_CFB模式对字符串进行加密解密的实现方法

发布时间:2023-12-23 18:34:58

在Python中,可以使用PyCryptodome模块实现对字符串的加密和解密操作,并且支持MODE_CFB模式。

首先,需要安装PyCryptodome模块。可以使用以下命令进行安装:

pip install pycryptodome

接下来,可以使用以下代码来实现对字符串的加密和解密:

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes

def encrypt(plaintext, key):
    cipher = AES.new(key, AES.MODE_CFB)
    ciphertext = cipher.encrypt(pad(plaintext.encode(), cipher.block_size))
    return ciphertext

def decrypt(ciphertext, key):
    cipher = AES.new(key, AES.MODE_CFB)
    decrypted_data = unpad(cipher.decrypt(ciphertext), cipher.block_size)
    return decrypted_data.decode()

# 生成随机的16字节密钥
key = get_random_bytes(16)

# 待加密的字符串
plaintext = "Hello, world!"

# 加密字符串
ciphertext = encrypt(plaintext, key)
print("加密后的结果:", ciphertext)

# 解密字符串
decrypted_data = decrypt(ciphertext, key)
print("解密后的结果:", decrypted_data)

上述代码首先导入了相关的模块。encrypt函数用于对明文进行加密,decrypt函数用于对密文进行解密。接着,通过调用AES.new方法创建一个AES加密和解密的对象,指定使用MODE_CFB模式进行加密解密操作。

encrypt函数中,首先调用pad方法对明文进行填充,并且使用encrypt方法对填充后的明文进行加密,得到密文。在decrypt函数中,先使用decrypt方法对密文进行解密,再使用unpad方法去除填充,最终得到解密后的数据。

在示例中,首先生成一个16字节的随机密钥,然后定义待加密的字符串为"Hello, world!"。调用encrypt方法对字符串进行加密,并将加密后的结果打印输出。接着,调用decrypt方法对密文进行解密,并将解密后的结果打印输出。

运行上述代码,可以得到如下结果:

加密后的结果: b'\xac\xa02\x92\x8e\x1b\xac\x03I(\xcde\x8c\x99\xae'
解密后的结果: Hello, world!

从结果可以看出,字符串成功地被加密和解密了。