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程序
Oct 09 PHP
PHP的加密方式及原理
Jun 14 PHP
用php实现百度网盘图片直链的代码分享
Nov 01 PHP
解析PHP中intval()等int转换时的意外异常情况
Jun 21 PHP
php搜索文件程序分享
Oct 30 PHP
php编程每天必学之验证码
Mar 03 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
May 13 PHP
基于Swoole实现PHP与websocket聊天室
Aug 03 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 PHP
PHP时间函数使用详解
Mar 21 PHP
PHP中localeconv()函数的用法
Mar 26 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 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
PHP4实际应用经验篇(7)
2006/10/09 PHP
php小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
php入门学习知识点四 PHP正则表达式基本应用
2011/07/14 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
Jquery submit()无法提交问题
2013/04/21 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
跟我学习javascript的prototype使用注意事项
2015/11/17 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
JavaScript中Promise的使用详解
2017/02/26 Javascript
关于redux-saga中take使用方法详解
2018/02/27 Javascript
js实现移动端轮播图
2020/12/21 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
uni-app自定义导航栏按钮|uniapp仿微信顶部导航条功能
2019/11/12 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
python基于物品协同过滤算法实现代码
2018/05/31 Python
python实现决策树分类(2)
2018/08/30 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
基于Python测试程序是否有错误
2020/05/16 Python
Python接口自动化测试的实现
2020/08/28 Python
Python内置函数property()如何使用
2020/09/01 Python
python 制作简单的音乐播放器
2020/11/25 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
HTML5 Web Database 数据库的SQL语句的使用方法
2012/12/09 HTML / CSS
如何查找网页漏洞
2016/06/22 面试题
英语专业毕业生自荐信
2013/10/28 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
法律进社区实施方案
2014/03/21 职场文书
产品发布会策划方案
2014/05/12 职场文书