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 相关文章推荐
php session 检测和注销
Mar 16 PHP
PHP n个不重复的随机数生成代码
Jun 23 PHP
php 正则匹配函数体
Aug 25 PHP
为PHP初学者的8点有效建议
Nov 20 PHP
php中日期加减法运算实现代码
Dec 08 PHP
PHP抓取网页、解析HTML常用的方法总结
Jul 01 PHP
PHP实现生成唯一会员卡号
Aug 24 PHP
PHP中SSO Cookie登录分析和实现
Nov 06 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
Sep 09 PHP
thinkPHP5.0框架URL访问方法详解
Mar 18 PHP
php PDO判断连接是否可用的实现方法
Apr 03 PHP
yii 框架实现按天,月,年,自定义时间段统计数据的方法分析
Apr 04 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
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
PHP中数组的分组排序实例
2014/06/01 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
关于jQuery object and DOM element
2013/04/15 Javascript
使用postMesssage()实现iframe跨域页面间的信息传递
2016/03/29 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
JavaScript中动态向表格添加数据
2017/01/24 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
JS简单数组排序操作示例【sort方法】
2019/05/17 Javascript
小程序云开发教程如何使用云函数实现点赞功能
2019/05/18 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
浅析Python中的多条件排序实现
2016/06/07 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
python 实现矩阵按对角线打印
2019/11/29 Python
tensorflow之并行读入数据详解
2020/02/05 Python
python之语音识别speech模块
2020/09/09 Python
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
Lancome兰蔻官方旗舰店:来自法国的世界知名美妆品牌
2018/06/14 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
事业单位竞聘上岗实施方案
2014/03/28 职场文书
项目建议书怎么写
2014/05/15 职场文书
专题组织生活会思想汇报
2014/10/01 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
2019新员工心得体会
2019/06/25 职场文书
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA
天谕手游15杯全调酒配方和调酒券的获得方式
2022/04/06 其他游戏
Java Lambda表达式常用的函数式接口
2022/04/07 Java/Android