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公用函数列表[正则]
Feb 22 PHP
PHP调用MySQL的存储过程的实现代码
Aug 12 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
Mar 28 PHP
10个实用的PHP代码片段
Sep 02 PHP
php笔记之:有规律大文件的读取与写入的分析
Apr 26 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
Nov 07 PHP
php使用百度翻译api示例分享
Jan 31 PHP
PHP查询快递信息的方法
Mar 07 PHP
PHP获取数组的键与值方法小结
Jun 13 PHP
PHP数据的提交与过滤基本操作实例详解
Nov 11 PHP
PHP 序列化和反序列化函数实例详解
Jul 18 PHP
详解PHP中curl_multi并发的实现
Jun 08 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-fpm的配置详解
2013/06/03 PHP
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
Jquery图形报表插件 jqplot简介及参数详解
2012/10/10 Javascript
NodeJS的url截取模块url-extract的使用实例
2013/11/18 NodeJs
jquery ajax 简单范例(界面+后台)
2013/11/19 Javascript
js中的caller和callee属性介绍和例子
2014/06/07 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
js闭包实现按秒计数
2015/04/23 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
详解React中setState回调函数
2018/06/14 Javascript
详解vue配置后台接口方式
2019/03/29 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
Python and、or以及and-or语法总结
2015/04/14 Python
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
python 平衡二叉树实现代码示例
2018/07/07 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
python爬虫基础知识点整理
2020/06/02 Python
就业推荐自我鉴定
2013/10/06 职场文书
初中生物教学反思
2014/01/10 职场文书
爱岗敬业演讲稿范文
2014/01/14 职场文书
汉语言文学职业规划
2014/02/14 职场文书
仓管员岗位责任制
2014/02/19 职场文书
体育口号大全
2014/06/18 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
canvas实现贪食蛇的实践
2022/02/15 Javascript
教你使用Jenkins集成Harbor自动发布镜像
2022/04/03 Servers
Linux中文件的基本属性介绍
2022/06/01 Servers
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS