我有一个解密数据的 API。此 API 仅接收密钥(AES 密钥的字节)。此 API 不接收初始化向量(它使用零向量作为初始化向量)。
我从第 3 方收到加密数据。使用特定密钥和初始化向量将此数据加密为 AES 256。
我有密钥和初始化向量。有没有办法使用 API 解密这些数据?或者,换句话说,如果密钥和初始化向量都是常量并且我都有它们,我是否可以创建一个密钥,允许我使用 {0, 0, 0, ...} 初始化向量解密这些数据?
谢谢。
我有一个解密数据的 API。此 API 仅接收密钥(AES 密钥的字节)。此 API 不接收初始化向量(它使用零向量作为初始化向量)。
我从第 3 方收到加密数据。使用特定密钥和初始化向量将此数据加密为 AES 256。
我有密钥和初始化向量。有没有办法使用 API 解密这些数据?或者,换句话说,如果密钥和初始化向量都是常量并且我都有它们,我是否可以创建一个密钥,允许我使用 {0, 0, 0, ...} 初始化向量解密这些数据?
谢谢。
是的,可以解密...不,不是您描述的方式
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 开始获取所有明文块...
一旦你获得了所有的明文块,你可能会想要去除填充,但那是另一回事了......