博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php7 openssl_decrypt AES的ECB与CBC加解密
阅读量:6640 次
发布时间:2019-06-25

本文共 1461 字,大约阅读时间需要 4 分钟。

hot3.png

    php7.2版本用openssl_encrypt代替mcrypt_encrypt,导致以往自己写的Aes加密类不能用。

    这次项目客户端用的是 AES-128-ECB 加密,我用在线AES工具来测试,发现自己写的加解密方法得到的值不一样。而最终发现是加密的key不是16位长,导致ios客户端与服务器php的加解密不一致。后商讨key为16位长,遂问题解决。下面是 AES-128-ECB 加密类;

class Aes{    //密钥 须是16位    public $key ;    /**     * 解密字符串     * @param string $data 字符串     * @return string     */    public function __construct()    {    	$this->key = '1234567890123456';    }    public  function decode($str)    {        return openssl_decrypt(base64_decode($str),"AES-128-ECB",$this->key,OPENSSL_RAW_DATA);    }    /**     * 加密字符串     * @param string $data 字符串     * @return string     */    public  function encode($str)    {        return base64_encode(openssl_encrypt($str,"AES-128-ECB",$this->key,OPENSSL_RAW_DATA));    }}

若你是采用CBC加密,则还需排序$iv偏移量,如下面是AES-128-CBC加解密类:

class Aes{    //密钥 须是16位    public $key ;    //偏移量    public $iv = '1234567890123456';    /**     * 解密字符串     * @param string $data 字符串     * @return string     */    public function __construct()    {    	$this->key = '1234567890123456';    }    public  function decode($str)    {        return openssl_decrypt(base64_decode($str),"AES-128-CBC",$this->key,OPENSSL_RAW_DATA, $this->iv);    }    /**     * 加密字符串     * @param string $data 字符串     * @return string     */    public  function encode($str)    {        return base64_encode(openssl_encrypt($str,"AES-128-CBC",$this->key,OPENSSL_RAW_DATA, $this->iv));    }}

 

转载于:https://my.oschina.net/u/3403514/blog/1809008

你可能感兴趣的文章
UI框架
查看>>
扩展方法
查看>>
async/await
查看>>
Socket通信
查看>>
粘包和分包
查看>>
C#连接、访问MySQL数据库
查看>>
动画系统
查看>>
Quaternion
查看>>
01定时回调
查看>>
02定时回调增加任务循环功能
查看>>
03定时回调增加任务删除功能
查看>>
06定时任务简化
查看>>
02加载AssetBundle资源
查看>>
03AssetBundle分组策略
查看>>
04打包选项和Manifest文件
查看>>
05AssetBundle的四种加载资源方式
查看>>
06Manifest文件得到某个包的依赖和卸载 AssetBundle
查看>>
备忘录模式
查看>>
03Lua中的数据类型
查看>>
04Table
查看>>