键+初始化向量到新键?

时间:2013-04-07 10:43:43

标签: c# java security encryption aes

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

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

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

感谢。

1 个答案:

答案 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开始获取所有明文块...

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