2017-10-07 94 views
0

我正在開發一個php系統,其中所有數據都由用戶密碼派生的密鑰加密。 我已經能夠派生出密鑰,但使用AES加密數據需要密鑰和IV。 這就是我懷疑出生的地方: 在這種情況下,我想我應該存儲IV來解密數據。我在哪裏存儲?在數據庫中還是在服務器上的文件中? 還是不正確的存儲IV,是否有另一種方法獲得相同的密鑰相同的IV?在AES中使用IV和密鑰派生256 BIT

回答

2

不要從您從中獲得密鑰的同一來源派生IV。您應該爲每個加密操作使用隨機生成的IV,並簡單地將IV與密文一起存儲。

將密文簡單地加在密文中是很常見的,這樣在數據需要解密時可以很容易地檢索到密文。 IV不需要保密,所以上述方法是完全安全的。

重申一下,因爲它很重要,所以不會從KDF或類似物中派生出IV,而是總是隨機地爲每個加密操作產生一個新的IV。

+0

太棒了,我明白了:) –