在PHP 7.2中,mcrypt
扩展已被移除,因为该扩展已经过时且存在安全问题。取而代之的是openssl
扩展,它提供了更强大和安全的加密功能。
要将使用mcrypt
的代码转换为使用openssl
,您需要进行以下更改:
替换加密算法:mcrypt
提供了多种加密算法,如MCRYPT_RIJNDAEL_128
,而openssl
使用不同的算法标识符。您需要将mcrypt
中使用的算法替换为openssl
中的等效算法。例如,将MCRYPT_RIJNDAEL_128
替换为AES-128-CBC
。
替换密钥和向量长度:mcrypt
使用字节长度来表示密钥和向量的大小,而openssl
使用位长度。因此,您需要将密钥和向量的长度从字节转换为位。例如,如果您的密钥长度为16字节,则在openssl
中应将其设置为128位。
更新加密和解密函数:mcrypt
提供了mcrypt_encrypt
和mcrypt_decrypt
函数来进行加密和解密操作,而openssl
使用不同的函数。您需要使用openssl_encrypt
和openssl_decrypt
函数来替换这些函数。
下面是一个使用mcrypt
的示例代码:
$key = 'my_secret_key';
$iv = 'my_iv';
$data = 'Hello, World!';
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC, $iv);
echo $decrypted;
现在,让我们将上述代码转换为使用openssl
:
$key = 'my_secret_key';
$iv = 'my_iv';
$data = 'Hello, World!';
$key = substr(hash('sha256', $key, true), 0, 16);
$encrypted = openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
$decrypted = openssl_decrypt($encrypted, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
echo $decrypted;
在上面的代码中,我们使用hash
函数将密钥转换为128位,并使用substr
函数截取前16个字节作为实际密钥。然后,我们使用openssl_encrypt
和openssl_decrypt
函数进行加密和解密操作。
请注意,以上示例仅涉及基本的加密和解密操作。如果您的代码中还包含其他mcrypt
函数,您需要根据openssl
的等效函数进行相应的更改。
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站