发生异常:ValueError 数据必须在 ECB 模式下与块边界对齐

问题描述 投票:0回答:1

下面的代码在运行时会抛出错误“发生异常:ValueError 数据必须与 ECB 模式下的块边界对齐”。这是一个加密的 json 文件,无论我做什么都会抛出此错误。有什么想法吗?

我真的只是想制作或找到可以从文件中获取加密数据并解密的东西。唯一有效的是这个网站。它在 aes ecb 中完美运行,但只允许最大 2mb 的文件。

from Crypto.Cipher import AES

encFile = open('file.json', 'r', encoding='Latin1')
encFile = encFile.read()
key = open('Key.txt', 'r')
key = key.read()
cipher = AES.new(key.encode("utf8"), AES.MODE_ECB)

encFile = encFile.encode("utf8")
decrypted = cipher.decrypt(encFile)
python cryptography aes ecb
1个回答
0
投票

AES 是一种分组密码,可在 128 位块(即 16 字节)上运行。在 ECB 模式下,消息被分割成该大小的块,并且每个块都单独加密。如果消息的长度不是块大小的倍数,则末尾有一个无法加密的不完整块(至少不能使用 ECB)。您有两个选择:

  1. 向要加密的数据添加填充
  2. 使用不同的操作模式,不需要消息长度是 16 字节的倍数。

最后但并非最不重要的一点是,应该指出的是,ECB 是不安全的,因为相同的纯文本块将被加密为相同的密文块。

© www.soinside.com 2019 - 2024. All rights reserved.