【发布时间】:2017-10-07 20:58:35
【问题描述】:
我正在开发一个 php 系统,其中所有数据都由从用户密码派生的密钥加密。 我已经能够导出密钥,但是使用 AES 加密数据需要密钥和 IV。 这就是我产生疑问的地方: 在这种情况下,我想我应该存储 IV 以便稍后解密数据。我在哪里存储?在数据库中还是在服务器上的文件中? 或者存储 IV 是不正确的,是否有另一种方法可以为相同的密钥获取相同的 IV?
【问题讨论】:
标签: php security encryption
我正在开发一个 php 系统,其中所有数据都由从用户密码派生的密钥加密。 我已经能够导出密钥,但是使用 AES 加密数据需要密钥和 IV。 这就是我产生疑问的地方: 在这种情况下,我想我应该存储 IV 以便稍后解密数据。我在哪里存储?在数据库中还是在服务器上的文件中? 或者存储 IV 是不正确的,是否有另一种方法可以为相同的密钥获取相同的 IV?
【问题讨论】:
标签: php security encryption
不要从派生密钥的同一来源派生 IV。您应该为每个加密操作使用随机生成的 IV,并简单地将 IV 与密文一起存储。
通常将 IV 简单地添加到密文中,以便在需要解密数据时轻松检索它。 IV不需要保密,所以上述方法是完全安全的。
重申一下,因为它很重要,不要从 KDF 或类似物中派生 IV,始终为每个加密操作随机生成一个新的 IV。
【讨论】: