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 相关文章推荐
用Socket发送电子邮件(利用需要验证的SMTP服务器)
Oct 09 PHP
新浪新闻小偷
Oct 09 PHP
PHP4 与 MySQL 数据库操作函数详解
Oct 09 PHP
用Php实现链结人气统计
Oct 09 PHP
php 删除数组元素
Jan 16 PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 PHP
10个可以简化php开发过程的MySQL工具
Apr 11 PHP
zend framework框架中url大小写问题解决方法
Aug 19 PHP
PHP中的日期加减方法示例
Aug 21 PHP
PHP中构造函数和析构函数解析
Oct 10 PHP
浅谈PHP安全防护之Web攻击
Jan 03 PHP
PHP接入微信H5支付的方法示例
Oct 28 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实现图片旋转效果实例代码
2014/10/01 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
2016/06/20 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
JS 实现分页打印功能
2018/05/16 Javascript
原生js实现的移动端可拖动进度条插件功能详解
2019/08/15 Javascript
Vue实现剪贴板复制功能
2019/12/31 Javascript
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
Python中Continue语句的用法的举例详解
2015/05/14 Python
Python入门之modf()方法的使用
2015/05/15 Python
Python读写unicode文件的方法
2015/07/10 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
django2用iframe标签完成网页内嵌播放b站视频功能
2018/06/20 Python
python实现文本界面网络聊天室
2018/12/12 Python
Python流行ORM框架sqlalchemy安装与使用教程
2019/06/04 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
python3注册全局热键的实现
2020/03/22 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
丝芙兰新加坡官网:Sephora新加坡
2018/12/04 全球购物
元旦晚会感言
2014/03/12 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
党校培训自我鉴定范文
2014/04/10 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
有限责任公司股东合作协议书
2014/12/02 职场文书
幼儿园母亲节活动总结
2015/02/10 职场文书
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL
教你如何用cmd快速登录服务器
2022/06/10 Servers