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 相关文章推荐
如何分别全角和半角以避免乱码
Oct 09 PHP
如何开发一个虚拟域名系统
Oct 09 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
Sep 09 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
Nov 07 PHP
php一次性删除前台checkbox多选内容的方法
Sep 22 PHP
php数组删除元素示例
Mar 21 PHP
php5.3以后的版本连接sqlserver2000的方法
Jul 28 PHP
WordPress中邮件的一些修改和自定义技巧
Dec 15 PHP
PHP实现权限管理功能示例
Sep 22 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 PHP
Laravel6.18.19如何优雅的切换发件账户
Jun 14 PHP
php 原生分页
Apr 01 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新手上路(十)
2006/10/09 PHP
深入PHP FTP类的详解
2013/06/13 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
关于文本限制字数的js代码
2007/04/02 Javascript
JavaScript-世界上误解最深的语言分析
2007/08/12 Javascript
jQuery的链式调用浅析
2010/12/03 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
javascript简易画板开发
2020/04/12 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
javascript实现秒表计时器的制作方法
2017/02/16 Javascript
JS仿JQuery选择器功能
2017/03/08 Javascript
详解vue-router基本使用
2017/04/18 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
js数据类型检测总结
2018/08/05 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
Python回调函数用法实例详解
2015/07/02 Python
Python内建模块struct实例详解
2018/02/02 Python
用Python写脚本,实现完全备份和增量备份的示例
2018/04/29 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
virtualenv 指定 python 解释器的版本方法
2018/10/25 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
python基于opencv检测程序运行效率
2019/12/28 Python
python实现简单的tcp 文件下载
2020/09/16 Python
使用CSS3创建动态菜单效果
2015/07/10 HTML / CSS
html5给汉字加拼音加进度条的实现代码
2020/04/07 HTML / CSS
Under Armour安德玛法国官网:美国高端运动科技品牌
2018/06/29 全球购物
接待员岗位职责范本
2015/04/15 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
Nginx文件已经存在全局反向代理问题排查记录
2022/07/15 Servers