文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
PHP7 openssl函数替换mcrypt函数加密解密文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
以下是两者的区别及openssl替换mcrypt的方法:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
替代文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html$key
=
'-2i61^'
;
$iv
=
'&11r2(*3'
;
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html$data
=
"123456789"
;
//要加密的数据
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlif
(PHP_VERSION<5.6){
$a
=
base64_encode
(mcrypt_encrypt(MCRYPT_3DES,
$key
,
$data
,MCRYPT_MODE_CBC,
$iv
));
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
echo
'mcrypt_encrypt:'
.
$a
.
'
';
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
//rtrim 移除字符串右侧的空白字符
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
$decrypt
= rtrim(mcrypt_decrypt(MCRYPT_3DES,
$key
,
base64_decode
(
$a
),MCRYPT_MODE_CBC,
$iv
),
'\0'
);
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
echo
'mcrypt_decrypt:'
.
$decrypt
.
'
';
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html}
//使用mcrypt函数来对比
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html$len
=
strlen
(
$data
);
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlif
(
$len
%8){
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
$data
=
str_pad
(
$data
,
$len
+8-
$len
%8,
"\0"
);
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html}
//使用空字符填充字符串的右侧,使字符串位数变为8的倍数
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html$b
=
base64_encode
(openssl_encrypt(
$data
,
'DES-EDE3-CBC'
,
$key
,OPENSSL_RAW_DATA|OPENSSL_NO_PADDING,
$iv
));
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlecho
"openssl_encrypt:"
.
$b
.
'
';
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html$decrypt
= openssl_decrypt(
base64_decode
(
$b
),
'DES-EDE3-CBC'
,
$key
,OPENSSL_RAW_DATA|OPENSSL_NO_PADDING,
$iv
);
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlecho
'openssl_decrypt:'
.
$decrypt
.
'
';
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
运行结果文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlmcrypt_encrypt:O4/3PssvAkrYtIlhbQEr+g==
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlmcrypt_decrypt:123456789
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlopenssl_encrypt:O4/3PssvAkrYtIlhbQEr+g==
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlopenssl_decrypt:123456789
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
然后来个对比,看看这两个函数的速度:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html$key
=
'-2i61^'
;
$iv
=
'&11r2(*3'
;
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html$data
=
"123456789"
;
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlif
(PHP_VERSION<5.6){
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
$start
= microtime(true);
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
for
(
$i
=0;
$i
<10000;
$i
++){
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
$a
=
base64_encode
(mcrypt_encrypt(MCRYPT_3DES,
$key
,
$data
,MCRYPT_MODE_CBC,
$iv
));
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
}
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
echo
'mcrypt_time:'
;
echo
microtime(true)-
$start
.
'
';
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
echo
'mcrypt_encrypt'
.
$a
.
'
';
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
$decrypt
= rtrim(mcrypt_decrypt(MCRYPT_3DES,
$key
,
base64_decode
(
$a
),MCRYPT_MODE_CBC,
$iv
),
'\0'
);
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
echo
'mcrypt_decrypt'
.
$decrypt
.
'
';
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html}
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html$start
= microtime(true);
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlfor
(
$i
=0;
$i
<10000;
$i
++){
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
$len
=
strlen
(
$data
);
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
if
(
$len
%8){
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
$data
=
str_pad
(
$data
,
$len
+8-
$len
%8,
"\0"
);
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
}
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
$b
=
base64_encode
(openssl_encrypt(
$data
,
'DES-EDE3-CBC'
,
$key
,OPENSSL_RAW_DATA|OPENSSL_NO_PADDING,
$iv
));
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html}
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlecho
"openssl_time:"
;
echo
microtime(true)-
$start
.
'
';
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlecho
"openssl_encrypt:"
.
$b
.
'
';
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html$decrypt
= openssl_decrypt(
base64_decode
(
$b
),
'DES-EDE3-CBC'
,
$key
,OPENSSL_RAW_DATA|OPENSSL_NO_PADDING,
$iv
);
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlecho
'openssl_decrypt'
.
$decrypt
.
'
';
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html
结果文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlmcrypt_time:1.8425710201263
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlmcrypt_encryptO4/3PssvAkrYtIlhbQEr+g==
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlmcrypt_decrypt123456789
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlopenssl_time:0.023201942443848
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlopenssl_encrypt:O4/3PssvAkrYtIlhbQEr+g==
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.htmlopenssl_decrypt123456789
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/13974.html