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 相关文章推荐
LotusPhp笔记之:基于ObjectUtil组件的使用分析
May 06 PHP
php的SimpleXML方法读写XML接口文件实例解析
Jun 16 PHP
最新制作ThinkPHP3.2.3完全开发手册
Nov 23 PHP
Twig模板引擎用法入门教程
Jan 20 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
Jun 19 PHP
PHP错误处理函数register_shutdown_function使用示例
Jul 03 PHP
详解PHP swoole process的使用方法
Aug 26 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
Oct 09 PHP
深入解析PHP底层机制及相关原理
Dec 11 PHP
详解PHP设计模式之依赖注入模式
May 25 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
PHP中实现图片的锐化
2006/10/09 PHP
JavaScript与函数式编程解释
2007/04/27 Javascript
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
开发 Internet Explorer 右键功能表(ContextMenu)
2013/07/03 Javascript
jQuery插件实现静态HTML验证码校验
2015/11/06 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
Bootstrap 布局组件(全)
2016/07/18 Javascript
BootStrap学习系列之布局组件(下拉,按钮组[toolbar],上拉)
2017/01/03 Javascript
原生js实现可拖动的登录框效果
2017/01/21 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
2017/04/25 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
js中url对象化管理分析
2017/12/29 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
[01:33]一分钟玩转DOTA2第三弹:DOTA2&DotA快捷操作大对比
2014/06/04 DOTA
python控制台显示时钟的示例
2014/02/24 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
Python split() 函数拆分字符串将字符串转化为列的方法
2019/07/16 Python
python3 logging日志封装实例
2020/04/08 Python
Python猫眼电影最近上映的电影票房信息
2020/09/18 Python
移动HTML5前端框架—MUI的使用
2017/12/18 HTML / CSS
加拿大最大的箱包及旅游配件零售商:Bentley Leathers
2017/07/19 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
请问如下代码执行后a和b的值分别是什么
2016/05/05 面试题
大学生饮食连锁店创业计划书
2014/01/17 职场文书
室内拓展活动方案
2014/02/13 职场文书
酒店员工检讨书
2014/02/18 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
行政后勤人员工作计划应该怎么写?
2019/08/16 职场文书
新手必备Python开发环境搭建教程
2021/05/28 Python