今天有个加密,使用的加密字段和key,加密模式都一样,可是加密后的数据不一样,
这是代码片段
<?php
$privateKey = "qewrvxffbfdhsfdgh";
$iv = "234253454354352";
$data = "测试用的数据";
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $privateKey, $data, MCRYPT_MODE_CBC, $iv);
echo(base64_encode($encrypted));
echo "\n";
>
加密后的数据是gHXA5vo5hEMxjthYNq/gborXWNETPw0rYEb2FspAYzc=
下面是使用php7.0版本以上不支持mcrypt_encryp函数进行加密的代码
<?php
$privateKey = "qewrvxffbfdhsfdgh";
$iv = "234253454354352";
$data = "测试用的数据";
$encrypted= openssl_encrypt($data,'aes-128-cbc', $privateKey, OPENSSL_RAW_DATA, $iv);
echo(base64_encode($encrypted));
echo "\n";
>
加密后是gHXA5vo5hEMxjthYNq/gbtwwm1TlRzsRBI64TrEo3P8=
1.gHXA5vo5hEMxjthYNq/gborXWNETPw0rYEb2FspAYzc=
2.gHXA5vo5hEMxjthYNq/gbtwwm1TlRzsRBI64TrEo3P8=
是不是不一样,这样加密出来的数据不仔细查看,会认为是一样的数据。
要想保证加密一样,将php7.0的代码修改如下
<?php
$privateKey = "qewrvxffbfdhsfdgh";
$iv = "234253454354352";
$data = "测试用的数据";
if (strlen($data) % 16) {
$data = str_pad($data,strlen($data) + 16 - strlen($data) % 16, "\0");
}
$encrypted= openssl_encrypt($data, 'AES-128-CBC',$privateKey,OPENSSL_NO_PADDING,$iv);
echo (base64_encode($encrypted));
加密后的数据是gHXA5vo5hEMxjthYNq/gborXWNETPw0rYEb2FspAYzc=,这样就保持一致了。
本文来自php7教程栏目,欢迎学习。
以上就是php7.0 openssl_encrypt如何加密的详细内容,更多请关注php中文网其它相关文章!
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
程序员必备接口测试调试工具:点击使用
Apipost = Postman + Swagger + Mock + Jmeter
Api设计、调试、文档、自动化测试工具
网页生成APP,用做网站的技术去做APP:立即创建
手机网站开发APP、自助封装APP、200+原生模块、2000+映射JS接口按需打包
相关文章
相关视频