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 Http_Template_IT类库进行模板替换
Mar 19 PHP
理解和运用PHP中的多态性[译]
Aug 02 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
May 10 PHP
PHP array_multisort() 函数的深入解析
Jun 20 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
FireFox浏览器使用Javascript上传大文件
Oct 30 PHP
PHP自定义函数获取汉字首字母的方法
Dec 01 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
Jan 21 PHP
php7新特性的理解和比较总结
Apr 14 PHP
thinkPHP5框架实现多数据库连接,跨数据连接查询操作示例
May 29 PHP
TP5框架请求响应参数实例分析
Oct 17 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
Nov 10 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连接sql server 2005环境配置及问题解决
2014/08/08 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
php微信扫码支付 php公众号支付
2019/03/24 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
js window.onload 加载多个函数的方法
2009/11/02 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
js中string转int把String类型转化成int类型
2014/08/13 Javascript
JavaScript学习笔记之JS事件对象
2015/01/22 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
jQuery实现表单动态加减、ajax表单提交功能
2018/06/08 jQuery
通过jquery.cookie.js实现记住用户名、密码登录功能
2018/06/20 jQuery
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
2019/08/23 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
vue.js实现简单购物车功能
2020/05/30 Javascript
[01:11:08]Winstrike vs NB 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
在Python中使用SimpleParse模块进行解析的教程
2015/04/11 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
Python3模拟登录操作实例分析
2019/03/12 Python
python之拟合的实现
2019/07/19 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
详解rem 适配布局
2018/10/31 HTML / CSS
科尔士百货公司官网:Kohl’s
2016/07/11 全球购物
数控加工专业毕业生自荐信
2013/09/27 职场文书
管理失职检讨书
2014/02/12 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
学校清明节活动总结
2014/07/04 职场文书
机械专业求职信范文
2014/07/15 职场文书
基层干部个人对照检查及整改措施
2014/10/28 职场文书
职位证明模板
2015/06/23 职场文书