2017-10-07 69 views
0

我正在开发一个php系统,其中所有数据都由用户密码派生的密钥加密。 我已经能够派生出密钥,但使用AES加密数据需要密钥和IV。 这就是我怀疑出生的地方: 在这种情况下,我想我应该存储IV来解密数据。我在哪里存储?在数据库中还是在服务器上的文件中? 还是不正确的存储IV,是否有另一种方法获得相同的密钥相同的IV?在AES中使用IV和密钥派生256 BIT

回答

2

不要从您从中获得密钥的同一来源派生IV。您应该为每个加密操作使用随机生成的IV,并简单地将IV与密文一起存储。

将密文简单地加在密文中是很常见的,这样在数据需要解密时可以很容易地检索到密文。 IV不需要保密,所以上述方法是完全安全的。

重申一下,因为它很重要,所以不会从KDF或类似物中派生出IV,而是总是随机地为每个加密操作产生一个新的IV。

+0

太棒了,我明白了:) –