在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 . "'))";

显然,检索到的数据的描述是使用相同的盐完成的。

我希望定期更改加盐值,但我如何才能访问数据库中使用先前加盐值加密的数据?

非常感谢你的支持,榴莲。

这是任何加密的常见问题:如果您想随着时间的推移轮换加密密钥,如何在不失去对已加密数据的访问权限的情况下执行此操作。

不幸的是,在这种情况下,您要么必须以增量方式使用新盐,这意味着只有新记录用新盐加密,要么您需要用旧盐解密数据并加密所有内容一次新的更多。

老实说,以这种方式使用字段级加密并不像各种示例所声称的那样安全,因为很难以安全有效的方式管理加密密钥。