Heim  >  Artikel  >  Backend-Entwicklung  >  Die OpenSSL-Funktion von PHP7 ersetzt die Verschlüsselungs- und Entschlüsselungsmethode der Mcrypt-Funktion

Die OpenSSL-Funktion von PHP7 ersetzt die Verschlüsselungs- und Entschlüsselungsmethode der Mcrypt-Funktion

silencement
silencementOriginal
2019-06-04 15:01:213573Durchsuche

Die OpenSSL-Funktion von PHP7 ersetzt die Verschlüsselungs- und Entschlüsselungsmethode der Mcrypt-Funktion

PHP7 openssl函数替换mcrypt函数加密解密

以下是两者的区别及openssl替换mcrypt的方法:

替代

$key = '-2i61^';
$iv = '&11r2(*3';

$data = "123456789"; //要加密的数据

if(PHP_VERSION<5.6){
    $a= base64_encode(mcrypt_encrypt(MCRYPT_3DES,$key,$data,MCRYPT_MODE_CBC,$iv));
    echo &#39;mcrypt_encrypt:&#39;.$a.&#39;<br>&#39;;
    //rtrim 移除字符串右侧的空白字符
    $decrypt = rtrim(mcrypt_decrypt(MCRYPT_3DES,$key,base64_decode($a),MCRYPT_MODE_CBC,$iv),&#39;\0&#39;);
    echo &#39;mcrypt_decrypt:&#39;.$decrypt.&#39;<br>&#39;;
} //使用mcrypt函数来对比



$len = strlen($data);
if($len%8){
    $data = str_pad($data,$len+8-$len%8,"\0");
}//使用空字符填充字符串的右侧,使字符串位数变为8的倍数
$b = base64_encode(openssl_encrypt($data,&#39;DES-EDE3-CBC&#39;,$key,OPENSSL_RAW_DATA|OPENSSL_NO_PADDING,$iv)); 

echo "openssl_encrypt:".$b. &#39;<br>&#39;;
$decrypt = openssl_decrypt(base64_decode($b),&#39;DES-EDE3-CBC&#39;,$key,OPENSSL_RAW_DATA|OPENSSL_NO_PADDING,$iv);
echo &#39;openssl_decrypt:&#39;.$decrypt.&#39;<br>&#39;;

运行结果

mcrypt_encrypt:O4/3PssvAkrYtIlhbQEr+g==
mcrypt_decrypt:123456789
openssl_encrypt:O4/3PssvAkrYtIlhbQEr+g==
openssl_decrypt:123456789

然后来个对比,看看这两个函数的速度:

$key = &#39;-2i61^&#39;;
$iv = &#39;&11r2(*3&#39;;

$data = "123456789";

if(PHP_VERSION<5.6){
    $start = microtime(true);
    for($i=0;$i<10000;$i++){
        $a= base64_encode(mcrypt_encrypt(MCRYPT_3DES,$key,$data,MCRYPT_MODE_CBC,$iv));
    }
    echo &#39;mcrypt_time:&#39;; echo microtime(true)-$start.&#39;<br>&#39;;
    echo &#39;mcrypt_encrypt&#39;.$a.&#39;<br>&#39;;
    $decrypt = rtrim(mcrypt_decrypt(MCRYPT_3DES,$key,base64_decode($a),MCRYPT_MODE_CBC,$iv),&#39;\0&#39;);
    echo &#39;mcrypt_decrypt&#39;.$decrypt.&#39;<br>&#39;;
}

$start = microtime(true);
for($i=0;$i<10000;$i++){
    $len = strlen($data);
    if($len%8){
        $data = str_pad($data,$len+8-$len%8,"\0");
    }
    $b = base64_encode(openssl_encrypt($data,&#39;DES-EDE3-CBC&#39;,$key,OPENSSL_RAW_DATA|OPENSSL_NO_PADDING,$iv));    
}
echo "openssl_time:"; echo microtime(true)-$start . &#39;<br>&#39;;
echo "openssl_encrypt:".$b. &#39;<br>&#39;;
$decrypt = openssl_decrypt(base64_decode($b),&#39;DES-EDE3-CBC&#39;,$key,OPENSSL_RAW_DATA|OPENSSL_NO_PADDING,$iv);
echo &#39;openssl_decrypt&#39;.$decrypt.&#39;<br>&#39;;

结果

mcrypt_time:1.8425710201263
mcrypt_encryptO4/3PssvAkrYtIlhbQEr+g==
mcrypt_decrypt123456789
openssl_time:0.023201942443848
openssl_encrypt:O4/3PssvAkrYtIlhbQEr+g==
openssl_decrypt123456789

本文来自php7教程栏目,欢迎学习。

Das obige ist der detaillierte Inhalt vonDie OpenSSL-Funktion von PHP7 ersetzt die Verschlüsselungs- und Entschlüsselungsmethode der Mcrypt-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn