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文本数据库的搜索方法
Oct 09 PHP
PHP 地址栏信息的获取代码
Jan 07 PHP
php 删除数组元素
Jan 16 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
Sep 29 PHP
Yii框架登录流程分析
Dec 03 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
Dec 18 PHP
PHP简单获取及判断提交来源的方法
Apr 22 PHP
windows7配置Nginx+php+mysql的详细教程
Sep 04 PHP
PHP实现电商订单自动确认收货redis队列
May 17 PHP
CodeIgniter框架实现的整合Smarty引擎DEMO示例
Mar 28 PHP
php封装的page分页类完整实例代码
Feb 01 PHP
PHP Beanstalkd消息队列的安装与使用方法实例详解
Feb 21 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 #PHP
浅谈Laravel队列实现原理解决问题记录
Aug 19 #PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 #PHP
利用 fsockopen() 函数开放端口扫描器的实例
Aug 19 #PHP
PHPMailer使用QQ邮箱实现邮件发送功能
Aug 18 #PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
Aug 18 #PHP
详解PHP如何更好的利用PHPstorm的自动提示
Aug 18 #PHP
You might like
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
WordPress中编写自定义存储字段的相关PHP函数解析
2015/12/25 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
自己的js工具 Event封装
2009/08/21 Javascript
JavaScript中的闭包原理分析
2010/03/08 Javascript
解析jquery获取父窗口的元素
2013/06/26 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
使用mini-define实现前端代码的模块化管理
2014/12/25 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
纯javascript实现自动发送邮件
2015/10/21 Javascript
JS制作类似选项卡切换的年历
2016/12/03 Javascript
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
2017/04/13 jQuery
JavaScript数组的5种迭代方法
2017/09/29 Javascript
JavaScript插件Tab选项卡效果
2017/11/14 Javascript
vue2.0 如何把子组件的数据传给父组件(推荐)
2018/01/15 Javascript
尝试自己动手用react来写一个分页组件(小结)
2018/02/09 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
python设置检查点简单实现代码
2014/07/01 Python
python遍历类中所有成员的方法
2015/03/18 Python
Python 字符串大小写转换的简单实例
2017/01/21 Python
Python重新加载模块的实现方法
2018/10/16 Python
用Python 执行cmd命令
2020/12/18 Python
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
群众路线党课主持词
2014/04/01 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
2015年党员个人剖析材料
2014/12/18 职场文书
邹越演讲观后感
2015/06/15 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
生产实习心得体会范文
2016/01/22 职场文书
python 爬取吉首大学网站成绩单
2021/06/02 Python
使用Python+OpenCV进行卡类型及16位卡号数字的OCR功能
2021/08/30 Python