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