由于 Mcrypt 已被弃用,我们希望在我们的代码中使用 OpenSSL,因为我们的服务器已经使用了 PHP 7.2.4。
我已经使用以下代码进行加密/解密。
//加密
function encrypt($text, $salt='') {
if ($text == "") {
return "";
}
if ($salt == "") {
$salt = 'DiAo74dOO09T48YESmuvbS0T';
}
return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $salt, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
}
//解密
function decrypt($text, $salt = '') {
if ($text == "") {
return "";
}
if ($salt == "") {
$salt = 'DiAo74dOO09T48YESmuvbS0T';
}
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $salt, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
}
AFdT9sa81krHkp/GoYCSwh7/lZn/gLZLHJSldi5/QCU=
这个字符串是使用上述加密函数加密的,但我想使用 OPENSSL
对其进行解密。我使用了以下代码对其进行解密:
$string = 'AFdT9sa81krHkp/GoYCSwh7/lZn/gLZLHJSldi5/QCU=';
$output = false;
$secret_key = 'DiAo74dOO09T48YESmuvbS0T';
$secret_iv1 = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-256-ECB'));
$secret_iv = bin2hex($secret_iv1);
$key = hash('sha256', $secret_key);
$iv = substr(hash('sha256', $secret_iv), 0, 16);
$output = base64_encode(openssl_encrypt($string, 'aes-256-ecb', $key, OPENSSL_RAW_DATA));
我希望得到解密后的输出结果:durhs-14767-w0163j1-89047
感谢您的回复。