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 Ajax实现页面无刷新发表评论
Jan 02 PHP
php获得当前的脚本网址
Dec 10 PHP
PHP 写文本日志实现代码
May 18 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 PHP
PHP中的函数-- foreach()的用法详解
Jun 24 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
thinkphp3查询mssql数据库乱码解决方法分享
Feb 11 PHP
php获取服务器端mac和客户端mac的地址支持WIN/LINUX
May 15 PHP
采用ThinkPHP中F方法实现快速缓存实例
Jun 13 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
Jul 09 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 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设计模式 Decorator(装饰模式)
2011/06/26 PHP
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
Yii配置文件用法详解
2014/12/04 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
php常用数组函数实例小结
2016/12/29 PHP
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
js 调用本地exe的例子(支持IE内核的浏览器)
2012/12/26 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
2015/06/11 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
React 项目迁移 Webpack Babel7的实现
2018/09/12 Javascript
vue-cli3 从搭建到优化的详细步骤
2019/01/20 Javascript
Vue2.0 实现页面缓存和不缓存的方式
2019/11/12 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
利用vue3+ts实现管理后台(增删改查)
2020/10/30 Javascript
JavaScript TAB栏切换效果的示例
2020/11/05 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
Python数据集切分实例
2018/12/08 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
Canvas 文本填充线性渐变的使用详解
2020/06/22 HTML / CSS
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
应届大学生自荐信格式
2013/09/21 职场文书
正风肃纪查摆剖析材料
2014/10/10 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
2019年最新版见习人员管理制度!
2019/07/08 职场文书
阿里云Nginx配置https实现域名访问项目(图文教程)
2021/03/31 Servers
关于vue-router-link选择样式设置
2022/04/30 Vue.js