在PHP/Mysql中,更改存储在配置文件中的盐值后如何访问数据库中的加密数据?
In PHP/ Mysql, how to access encrypted data in database after changing the salt value stored in a config file?
目前我正在加密用户敏感数据,然后再将其存储到数据库中:
// salt retrieved from config file
$salt = 'a1b915580757c17c38a986faab21493d';
$sql = "insert into `appointments` (`id`, `appointment_date`,
`appointment_email_address`) values (null, :date, AES_ENCRYPT(:email_address,
'" . $salt . "'))";
显然,检索到的数据的描述是使用相同的盐完成的。
我希望定期更改加盐值,但我如何才能访问数据库中使用先前加盐值加密的数据?
非常感谢你的支持,榴莲。
这是任何加密的常见问题:如果您想随着时间的推移轮换加密密钥,如何在不失去对已加密数据的访问权限的情况下执行此操作。
不幸的是,在这种情况下,您要么必须以增量方式使用新盐,这意味着只有新记录用新盐加密,要么您需要用旧盐解密数据并加密所有内容一次新的更多。
老实说,以这种方式使用字段级加密并不像各种示例所声称的那样安全,因为很难以安全有效的方式管理加密密钥。
目前我正在加密用户敏感数据,然后再将其存储到数据库中:
// salt retrieved from config file
$salt = 'a1b915580757c17c38a986faab21493d';
$sql = "insert into `appointments` (`id`, `appointment_date`,
`appointment_email_address`) values (null, :date, AES_ENCRYPT(:email_address,
'" . $salt . "'))";
显然,检索到的数据的描述是使用相同的盐完成的。
我希望定期更改加盐值,但我如何才能访问数据库中使用先前加盐值加密的数据?
非常感谢你的支持,榴莲。
这是任何加密的常见问题:如果您想随着时间的推移轮换加密密钥,如何在不失去对已加密数据的访问权限的情况下执行此操作。
不幸的是,在这种情况下,您要么必须以增量方式使用新盐,这意味着只有新记录用新盐加密,要么您需要用旧盐解密数据并加密所有内容一次新的更多。
老实说,以这种方式使用字段级加密并不像各种示例所声称的那样安全,因为很难以安全有效的方式管理加密密钥。