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 相关文章推荐
文件上传程序的全部源码
Oct 09 PHP
PHP 基本语法格式
Dec 15 PHP
php报表之jpgraph柱状图实例代码
Aug 22 PHP
PHP文章按日期(月日)SQL归档语句
Nov 29 PHP
php文本转图片自动换行的方法
Mar 13 PHP
PHP使用静态方法的几个注意事项
Sep 16 PHP
PHP中iconv函数转码时截断字符问题的解决方法
Jan 21 PHP
PHP计算加权平均数的方法
Jul 16 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
Laravel4中的Validator验证扩展用法详解
Jul 26 PHP
详解php 使用Callable Closure强制指定回调类型
Oct 26 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 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
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
理解PHP中的stdClass类
2014/04/18 PHP
php面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
php自定义函数实现统计中文字符串长度的方法小结
2017/04/15 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
JavaScript中函数声明优先于变量声明的实例分析
2012/03/01 Javascript
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
JavaScript通过元素的ID和name设置样式
2014/07/08 Javascript
jquery实现清新实用的网页菜单效果
2015/08/28 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
angularJs的ng-class切换class
2017/06/23 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
原生js实现密码强度验证功能
2020/03/18 Javascript
Python合并多个装饰器小技巧
2015/04/28 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
基于opencv实现简单画板功能
2020/08/02 Python
Django contrib auth authenticate函数源码解析
2020/11/12 Python
基于zepto的插件之移动端无缝向上滚动并上下触摸滑动实例代码
2016/12/20 HTML / CSS
资料员岗位职责
2013/11/17 职场文书
公积金转移接收函
2014/01/11 职场文书
3分钟演讲稿
2014/04/30 职场文书
职务任命书范本
2014/06/05 职场文书
关于旅游的活动方案
2014/08/15 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
培训通知书模板
2015/04/17 职场文书
一篇文章弄懂MySQL查询语句的执行过程
2021/05/07 MySQL
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python