0

我有一个解密数据的 API。此 API 仅接收密钥(AES 密钥的字节)。此 API 不接收初始化向量(它使用零向量作为初始化向量)。

我从第 3 方收到加密数据。使用特定密钥和初始化向量将此数据加密为 AES 256。

我有密钥和初始化向量。有没有办法使用 API 解密这些数据?或者,换句话说,如果密钥和初始化向量都是常量并且我都有它们,我是否可以创建一个密钥,允许我使用 {0, 0, 0, ...} 初始化向量解密这些数据?

谢谢。

4

1 回答 1

1

是的,可以解密...不,不是您描述的方式

AES 是一种分组密码

大多数情况下,密码并没有按原样使用,而是被置于一种特殊的操作模式中(这可能是您的 API 无法做到的)

您将不得不围绕密码实现解密例程,并将您的 AES-API 用作加密原语

例如,使用通用 AES 实现解密 AES-CBC

将密文拆分为 128 位块并从索引 1 开始编号

将 IV 添加为 cypher_block 0

现在要获取明文,我们可以围绕您的 API 函数定义一个函数

plaintext_block[i] = cypher_block[i-1] XOR aes_decrypt(cypher_block[i],key)

如您所见,您可以从索引 1 开始获取所有明文块...

一旦你获得了所有的明文块,你可能会想要去除填充,但那是另一回事了......

于 2013-04-07T15:13:31.167 回答