php openssl aes ecb,php7 openssl_decrypt AES的ECB与CBC加解密

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));

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值