问题描述:
AES加密存在问题,导致无法使用正确的密钥解密。
解决方法:
from Crypto.Util import Padding
def adjust_key_length(key, desired_length):
if len(key) < desired_length:
key = Padding.pad(key, desired_length)
elif len(key) > desired_length:
key = key[:desired_length]
return key
# 调整密钥长度为128位
key = adjust_key_length(key, 16)
# 调整密钥长度为192位
key = adjust_key_length(key, 24)
# 调整密钥长度为256位
key = adjust_key_length(key, 32)
from Crypto.Cipher import AES
# 使用CBC模式和PKCS7填充方式进行加密
cipher = AES.new(key, AES.MODE_CBC, iv)
...
# 使用CBC模式和PKCS7填充方式进行解密
cipher = AES.new(key, AES.MODE_CBC, iv)
...
from Crypto.Cipher import AES
# 加密
cipher = AES.new(key, AES.MODE_CBC, iv)
ciphertext = cipher.encrypt(plaintext)
# 解密,确保使用正确的密钥
cipher = AES.new(key, AES.MODE_CBC, iv)
decrypted = cipher.decrypt(ciphertext)
from Crypto.Cipher import AES
from Crypto.Util import Padding
def decrypt_aes(ciphertext, key, iv):
try:
cipher = AES.new(key, AES.MODE_CBC, iv)
decrypted = cipher.decrypt(ciphertext)
decrypted = Padding.unpad(decrypted, AES.block_size)
return decrypted
except Exception as e:
print("解密失败:", str(e))
return None
# 使用示例
plaintext = decrypt_aes(ciphertext, key, iv)
if plaintext is not None:
print("解密成功:", plaintext)
else:
print("解密失败")
通过以上方法,可以解决AES加密存在问题,无法使用正确的密钥解密的问题。请根据具体情况选择适用的方法进行处理。