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 file_get_contents函数轻松采集html数据
Apr 22 PHP
php去掉字符串的最后一个字符附substr()的用法
Mar 23 PHP
使用php+apc实现上传进度条且在IE7下不显示的问题解决方法
Apr 25 PHP
从PHP的源码中深入了解stdClass类
Apr 18 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
PHP实现的简易版图片相似度比较
Jan 07 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
教你在PHPStorm中配置Xdebug
Jul 27 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 PHP
Yii2 中实现单点登录的方法
Mar 09 PHP
php实现大文件断点续传下载实例代码
Oct 01 PHP
PHP Swoole异步MySQL客户端实现方法示例
Oct 24 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仿discuz分页效果代码
2008/10/02 PHP
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
php登陆页的密码处理方式分享
2013/10/14 PHP
PHP也能干大事 随机函数
2015/04/14 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
javascript实现促销倒计时+fixed固定在底部
2013/09/18 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
python海龟绘图实例教程
2014/07/24 Python
Python导入txt数据到mysql的方法
2015/04/08 Python
最大K个数问题的Python版解法总结
2016/06/16 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
通信研究生自荐信
2014/02/01 职场文书
公司经理聘任书
2014/03/29 职场文书
青奥会口号
2014/06/12 职场文书
财务人员岗位职责
2015/02/03 职场文书
白鹤梁导游词
2015/02/06 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python