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!
从结果可以看出,字符串成功地被加密和解密了。
