我正在开发一个php系统,其中所有数据都是通过从用户密码派生的密钥加密的。 我已经能够获得密钥,但是使用AES加密数据需要密钥和IV。 这就是我怀疑的地方: 在这种情况下,我想我应该存储IV以便稍后解密数据。我在哪里存储?在数据库中还是在服务器上的文件中? 或者存储IV是不正确的,还有另一种方法可以为同一个密钥获得相同的IV吗?
答案 0 :(得分:2)
不要从您从中派生密钥的相同来源派生IV。您应该为每个加密操作使用随机生成的IV,并只使用密文存储IV。
通常只需将IV预先添加到密文中,以便在需要解密数据时可以轻松检索它。 IV不需要保密,所以上述方法是完全安全的。
重申一下,因为重要的是,不从KDF或类似产品中获取IV,所以每次加密操作都会随机生成一个新的IV。