我正在创建一些用于保存文件的加密逻辑,并将应用AES加密。
实际上,我已经在在线加密器上实现了AES加密,而不是自己创建加密逻辑,所以我无法意识到IV的存在。
然而,我很难找到函数RijndaelManaged.GenerateIV()。
我认为自动生成的IV应该存储在目标文件的某个地方,以便成功地解密文件,但是它应该像加密密钥一样被隐藏。
把“普通”IV附加到文件后面可以吗?如果不是,我怎样才能更好地存储和使用IV?
发布于 2016-12-05 19:06:27
对于每个使用密钥加密的明文,initialization vector (IV)应该是唯一的和随机。然而,它不需要是秘密的。您可以将IV加到密码文本中,并以明文传送。
产生IV的原因是为了确保第一个块的加密是唯一的。例如,如果您使用AES/CBC用相同的密钥加密相同的消息,并且没有提供IV,则输出将是相同的。引入IV意味着密码文本的第一个块(16个字节)是唯一的,因此,整个消息密码文本将是不同的(由于CBC模式的操作)。有关更多细节,请参见维基百科关于分组密码运算方式的文章。
https://stackoverflow.com/questions/40960221
复制相似问题