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中两种缩放图片的函数,为图片添加水印
Jun 14 PHP
hadoop常见错误以及处理方法详解
Jun 19 PHP
PHP不用递归实现无限分级的例子分享
Apr 18 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
Aug 21 PHP
Laravel 5 框架入门(一)
Apr 09 PHP
php数组随机排序实现方法
Jun 13 PHP
实例详解PHP中html word 互转的方法
Jan 28 PHP
php is_writable判断文件是否可写实例代码
Oct 13 PHP
PHP使用xpath解析XML的方法详解
May 20 PHP
php实现的中秋博饼游戏之绘制骰子图案功能示例
Nov 06 PHP
php实现微信原生支付(扫码支付)功能
May 30 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 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 正则 过滤html 的超链接
2009/06/02 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
2014/06/30 PHP
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
jQuery选择器源码解读(七):elementMatcher函数
2015/03/31 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
2016/11/25 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
基于BootStrap的文本编辑器组件Summernote
2017/10/27 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
2018/01/21 jQuery
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
axios 封装上传文件的请求方法
2018/09/26 Javascript
前端vue+elementUI如何实现记住密码功能
2020/09/20 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
python调用Matplotlib绘制分布点并且添加标签
2018/05/31 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
Python3交互式shell ipython3安装及使用详解
2020/07/11 Python
基于Python-Pycharm实现的猴子摘桃小游戏(源代码)
2021/02/20 Python
详解HTML5中download属性的应用
2015/08/06 HTML / CSS
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
比利时家具购买网站:Home24
2019/01/03 全球购物
期末自我鉴定
2014/01/23 职场文书
三八节标语
2014/06/27 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
六一亲子活动感想
2015/08/07 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python