在AES加密中,通常使用随机生成的IV来增加密码的安全性。IV是一个随机数,在每次加密过程中都会与密钥一起使用。解密时,需要使用相同的IV来正确还原明文。
通过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):
# 生成随机IV
iv = get_random_bytes(AES.block_size)
# 创建AES加密器
cipher = AES.new(key, AES.MODE_CBC, iv)
# 对明文进行填充
padded_plaintext = pad(plaintext,AES.block_size)
# 加密
ciphertext = cipher.encrypt(padded_plaintext)
# 返回IV和密文
return iv + ciphertext
# 使用自定义密钥
key = b'abcdefghijklmnop'
plaintext = b'123456'
# 加密
ciphertext = encrypt(plaintext, key)
print("Ciphertext:", ciphertext)
# 解密
decrypted_plaintext = decrypt(ciphertext, key)
print("Decrypted plaintext:", decrypted_plaintext)
pad()和unpad()是用于填充和去除填充的自定义函数,实际使用中需要根据具体情况选择合适的方法,可自定义补位。
AES.block_size可以根据AES加密模式的不同而有所不同,例如在CBC模式下为16字节。