【发布时间】:2021-06-25 15:10:23
【问题描述】:
我正在尝试解密报告文档。我有以下解密细节:
{
"payload": {
"reportDocumentId": "XXXX",
"encryptionDetails": {
"standard": "AES",
"initializationVector": "XXXX",
"key": "XXXX"
},
"url": "https://XXXXX"
}}
使用这些细节,我尝试编写各种代码,给出不同的错误 1.
from base64 import b64encode
import hashlib
import pyaes
import os
from sys import getsizeof
content = requests.get(url)
ciphertext = content.text
#ciphertext = b64encode(bytes(content.text))
print(getsizeof(key))
print(getsizeof(iv))
decrypter = pyaes.Decrypter(pyaes.AESModeOfOperationCBC(key, iv))
decryptedData = decrypter.feed(ciphertext)
decryptedData += decrypter.feed()
print(decryptedData)
这显示了以下错误:ValueError: Initialization vector must be 16 bytes 我的初始化向量和密钥在 base64 中。它们的大小分别是 73 和 93
2.
content = requests.get(url)
message = content.text
print(len(message))
obj = AES.new(key, AES.MODE_CBC, iv)
print(obj.decrypt(message))
这会产生以下错误:ValueError: Incorrect AES key length (44 bytes)
我该如何解决这个问题?除此之外的任何方法也将非常有帮助
AWS KMS 是否有助于解密此类数据?
【问题讨论】:
-
由于您没有显示初始化向量 IV) 也没有显示密钥,因此很难提供帮助,但是 IV 必须是 16 的固定长度(在 Base64 解码之后)并且 AES 密钥需要准确16 或 24 或 32 字节长(Base64 解码后)。
-
在创建 AES.new 对象之前感谢 @MichaelFehr 我 b64decode 密钥和 iv,这使得密钥的长度 = 32 和 iv=16。之后,我就成功拿到了解密后的消息。
标签: python encryption aes python-cryptography amazon-kms