在AES 256 BIT中使用IV和密钥派生

时间:2017-10-07 20:58:36

标签: php security encryption

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

1 个答案:

答案 0 :(得分:2)

不要从您从中派生密钥的相同来源派生IV。您应该为每个加密操作使用随机生成的IV,并只使用密文存储IV。

通常只需将IV预先添加到密文中,以便在需要解密数据时可以轻松检索它。 IV不需要保密,所以上述方法是完全安全的。

重申一下,因为重要的是,不从KDF或类似产品中获取IV,所以每次加密操作都会随机生成一个新的IV。