由于MySQL升级,验证的加密密钥可能由于默认字符集改变而发生了不兼容的更改,同时,由于PHP的更新,openssl_decrypt()方法可能不再适用于原来使用的加密类型。
解决此问题,可以将加密密钥存储为二进制字符串,并在openssl_decrypt()方法中指定二进制输入和输出,以确保正确解密。另外,确定加密算法的兼容性和使用正确的加密密钥也十分关键。
下面是示例代码:
// PHP版本>=7.2
// 密钥存储为二进制字符串
$key = hex2bin('a7a389...');
// 解密
$ciphertext = 'encrypted_string';
$iv = hex2bin('d3bc28...');
$plaintext = openssl_decrypt($ciphertext, 'aes-256-gcm', $key, OPENSSL_RAW_DATA, $iv);
// 指定二进制输入和输出
$plaintext = hex2bin($plaintext);
echo $plaintext;