2016-12-04 103 views
0

我正在创建一些用于保存文件的加密逻辑,并将应用AES加密。初始化向量应该隐藏吗?

实际上,我已经在在线加密器上实现了AES加密,而不是自己创建加密逻辑,所以我无法实现IV的存在。奋斗,但是,我发现功能RijndaelManaged.GenerateIV()

我觉得自动生成的IV应该存放在目标文件的某个地方,以便成功解密文件,但它应该像加密密钥一样隐藏。

将'plain'IV追加到文件后面可以吗?如果不是,我该如何储存,并更适当地使用IV?

+0

[我应该如何为我的AES加密数据库条目派生密钥和初始化向量?](http://stackoverflow.com/questions/5193140/how-should-i-derive-the-key-and -initialization矢量换我-AES加密-数据B) –

回答

1

为与密钥加密每个明文的initialization vector(IV)应独特随机。但是,它不需要秘密。您可以将IV添加到密文中并以明文形式传输。

IV的原因是为了确保第一个块的加密是唯一的。例如,如果您使用AES/CBC加密了相同密钥并且没有提供IV的相同消息,则输出将是相同的。引入IV意味着密文的第一个块(16字节)将是唯一的,因此,整个消息密文将会不同(由于CBC操作模式)。有关更多详情,请参阅维基百科关于Block Cipher Modes of Operation的文章。