PHP实现的简单对称加密与解密方法实例小结


Posted in PHP onAugust 28, 2017

本文实例讲述了PHP实现的简单对称加密与解密方法。分享给大家供大家参考,具体如下:

方法一:YII自带的加密方法

/**
* 加密
* @var string [要加密的值]
*/
$secretKey = "wwj";
$data = $res['u_id'];
$encryptedData = Yii::$app->getSecurity()->encryptByPassword($data, $secretKey);
/**
* 解密
* @var [type] [加密前的值]
*/
$aid = $req->get('uid');
$secretKey = "wwj";
$uid = Yii::$app->getSecurity()->decryptByPassword($aid,$secretKey);

方法二:

/**
 * 安全URL编码
 * @param type $data
 * @return type
 */
function encode($data) {
 return str_replace(array('+', '/', '='), array('-', '_', ''), base64_encode(serialize($data)));
}
/**
* 安全URL解码
* @param type $string
* @return type
*/
function decode($string) {
 $data = str_replace(array('-', '_'), array('+', '/'), $string);
 $mod4 = strlen($data) % 4;
 ($mod4) && $data .= substr('====', $mod4);
 return unserialize(base64_decode($data));
}

方法三:

/**
* 加密
* @param [type] $code [description]
* @return [type]  [description]
*/
public static function encrypt($code)
{
 return urlencode(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5("key"), $code, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
}
/**
 * 解密
 * @param [type] $code [description]
 * @return [type]  [description]
 */
public static function decrypt($code)
{
 return urldecode(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5("key"), base64_decode($code), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
}

方法四:

/**
* 简单对称加密
* @param string $string [需要加密的字符串]
* @param string $skey [加密的key]
* @return [type]   [加密后]
*/
function encode($string = '', $skey = 'cxphp')
{
  $strArr = str_split(base64_encode($string));
  $strCount = count($strArr);
  foreach (str_split($skey) as $key => $value)
  $key < $strCount && $strArr[$key].=$value;
  return str_replace(array('=', '+', '/'), array('O0O0O', 'o000o', 'oo00o'), join('', $strArr));
}
/**
* 简单对称解密
* @param string $string [加密后的值]
* @param string $skey [加密的key]
* @return [type]   [加密前的字符串]
*/
function decode($string = '', $skey = 'cxphp')
{
  $strArr = str_split(str_replace(array('O0O0O', 'o000o', 'oo00o'), array('=', '+', '/'), $string), 2);
  $strCount = count($strArr);
  foreach (str_split($skey) as $key => $value)
   $key <= $strCount && isset($strArr[$key]) && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];
  return base64_decode(join('', $strArr));
}
PHP 相关文章推荐
mysql 中InnoDB和MyISAM的区别分析小结
Apr 15 PHP
PHP如何利用P3P实现跨域
Aug 24 PHP
php mysql_real_escape_string函数用法与实例教程
Sep 30 PHP
在PHP中运行Linux命令并启动SSH服务的例子
Jun 12 PHP
常见php数据文件缓存类汇总
Dec 05 PHP
PHP使用array_merge重新排列数组下标的方法
Jul 22 PHP
PHP实现简单汉字验证码
Jul 28 PHP
简单谈谈PHP中的Reload操作
Dec 12 PHP
Redis在Laravel项目中的应用实例详解
Aug 11 PHP
thinkPHP框架中执行原生SQL语句的方法
Oct 25 PHP
Laravel利用gulp如何构建前端资源详解
Jun 03 PHP
浅谈如何提高PHP代码质量之单元测试
May 28 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 #PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
Aug 28 #PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 #PHP
PHP使用栈解决约瑟夫环问题算法示例
Aug 27 #PHP
PHP基于递归实现的约瑟夫环算法示例
Aug 27 #PHP
PHP实现的简单sha1加密功能示例
Aug 27 #PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 #PHP
You might like
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
Docker 安装 PHP并与Nginx的部署实例讲解
2021/02/27 PHP
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
JavaScript对象创建及继承原理实例解剖
2013/02/28 Javascript
div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox
2013/08/29 Javascript
node.js中的定时器nextTick()和setImmediate()区别分析
2014/11/26 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
Python脚本后台运行的几种方式
2015/03/09 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
浅析JavaScript声明变量
2015/12/21 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
js获取iframe中的window对象的实现方法
2016/05/20 Javascript
jQuery插件EasyUI获取当前Tab中iframe窗体对象的方法
2016/08/05 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
在iFrame子页面里实现模态框的方法
2018/08/17 Javascript
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
详解vue3.0 diff算法的使用(超详细)
2020/07/01 Javascript
python 从远程服务器下载东西的代码
2013/02/10 Python
python删除文本中行数标签的方法
2018/05/31 Python
Python shutil模块用法实例分析
2019/10/02 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
基于python实现计算两组数据P值
2020/07/10 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
StubHub西班牙:购买和出售全球活动门票
2017/06/05 全球购物
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
说出你对remoting 和webservice的理解和应用
2014/06/08 面试题
防灾减灾标语
2014/10/07 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS