2016-12-04 99 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的文章。