検索
ホームページバックエンド開発PHP7PHP7 の openssl 関数は、mcrypt 関数の暗号化および復号化メソッドを置き換えます

PHP7 の openssl 関数は、mcrypt 関数の暗号化および復号化メソッドを置き換えます

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教程栏目,欢迎学习。

以上がPHP7 の openssl 関数は、mcrypt 関数の暗号化および復号化メソッドを置き換えますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)