Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

php7.2中mcrypt转openssl的方法详解

作者:√学卟会掩饰   发布日期:2023-12-29   浏览:507

在PHP 7.2中,mcrypt扩展已被移除,因为该扩展已经过时且存在安全问题。取而代之的是openssl扩展,它提供了更强大和安全的加密功能。

要将使用mcrypt的代码转换为使用openssl,您需要进行以下更改:

  1. 替换加密算法:mcrypt提供了多种加密算法,如MCRYPT_RIJNDAEL_128,而openssl使用不同的算法标识符。您需要将mcrypt中使用的算法替换为openssl中的等效算法。例如,将MCRYPT_RIJNDAEL_128替换为AES-128-CBC

  2. 替换密钥和向量长度:mcrypt使用字节长度来表示密钥和向量的大小,而openssl使用位长度。因此,您需要将密钥和向量的长度从字节转换为位。例如,如果您的密钥长度为16字节,则在openssl中应将其设置为128位。

  3. 更新加密和解密函数:mcrypt提供了mcrypt_encryptmcrypt_decrypt函数来进行加密和解密操作,而openssl使用不同的函数。您需要使用openssl_encryptopenssl_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_encryptopenssl_decrypt函数进行加密和解密操作。

请注意,以上示例仅涉及基本的加密和解密操作。如果您的代码中还包含其他mcrypt函数,您需要根据openssl的等效函数进行相应的更改。

上一篇:CentOS 源码安装 PHP7.2.4 并添加 swoole 2.1.1 扩展

下一篇:编译PHP7扩展(以memcached为例)

大家都在看

php session用法

phpisset函数

php后端

php爬虫框架

php读取csv文件

php 三元表达式

php文件加密

php 拆分字符串

php pcntl

php ||

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站