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在Web开发领域的优势
Oct 09 PHP
利用PHP制作简单的内容采集器的原理分析
Oct 01 PHP
PHP 工厂模式使用方法
May 18 PHP
php强制下载类型的实现代码
Apr 21 PHP
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
Jun 09 PHP
PHP中通过语义URL防止网站被攻击的方法分享
Sep 08 PHP
PHP读取xml方法介绍
Jan 12 PHP
php实现单链表的实例代码
Mar 22 PHP
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
Jun 17 PHP
php while循环得到循环次数
Oct 26 PHP
支持中文、字母、数字的PHP验证码
May 04 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 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
php-accelerator网站加速PHP缓冲的方法
2008/07/30 PHP
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
防止用户利用PHP代码DOS造成用光网络带宽
2011/03/01 PHP
php长字符串定义方法
2012/07/12 PHP
PHP面向对象学习笔记之一 基础概念
2012/10/06 PHP
php自动加载机制的深入分析
2013/06/08 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
php给数组赋值的实例方法
2019/09/26 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
关于Jqzoom的使用心得 jquery放大镜效果插件
2010/04/12 Javascript
Extjs中常用表单介绍与应用
2010/06/07 Javascript
node.js超时timeout详解
2014/11/26 Javascript
jQuery中Form相关知识汇总
2015/01/06 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
JavaScript中如何判断一个值的类型
2017/09/15 Javascript
深入理解与使用keep-alive(配合router-view缓存整个路由页面)
2018/09/25 Javascript
脚手架vue-cli工程webpack的作用和特点
2018/09/29 Javascript
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
JavaScript中的this妙用实例分析
2020/05/09 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
vue使用video插件vue-video-player详解
2020/10/23 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
[01:09]DOTA2次级职业联赛 - ishow.HMM战队宣传片
2014/12/01 DOTA
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
python实现关键词提取的示例讲解
2018/04/28 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
容易被忽略的Python内置类型
2020/09/03 Python
十佳护士先进事迹
2014/05/08 职场文书
大二学年个人总结
2015/03/03 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python