现在网上很多AES加密解密的方法,对于不在URL中传送的确是可以正常的使用,但是如果你使用thinkphp框架或者其它的框架时,如果需要传送密文,这种情况就出现问题了。
1、加密的字符串出现特殊字符
2、这些特殊的字符还要在thinkphp中会过虑掉;
为了解决以上的2个问题,需要做一定的处理,以下的加密代码可以完全解决这个问题,示例如下
<?php
namespace pangu;
class Aes {
public function encrypt($key,$str){
$size=mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$str=$this->pkcs5_pad($str, $size);
$td=mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
$iv=mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$data=mcrypt_generic($td,$str);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$data=base64_encode($data);
$data=str_replace(['=', '+', '/'],['O0O0O', 'o000o'