PHP加密解密类实例分析


Posted in PHP onApril 20, 2015

本文实例讲述了PHP加密解密类。分享给大家供大家参考。具体分析如下:

这段代码支持 数组加密 , 密文有效期, 各种对称加密

其中参数如下:

* @use ption::en($string, $key);
* @param String $string 需要加密的字串
* @param String $skey 密钥
* @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效
* @return String

1. php代码如下:

/*
 * -工具库-加密解密码
*/
class ption
{
 private static $original = array('=', '+', '/');
 private static $later = array('O0O0O', 'o0O0o', 'oo00o');
 function __construct()
 {
 }
 private static function md5($skey = '')
 {
  $skey = $skey ? $skey : 'ui' ; //uicms::_config('security/authkey');
  return md5(substr($skey, 0, 16));
 }
 /**
 * @use ption::en($string, $key);
 * @param String $string 需要加密的字串
 * @param String $skey 密钥
 * @param int $expiry 密文有效期, 加密时候有效, 单位 秒,0 为永久有效
 * @return String
 */
 static public function en($string = '', $skey = '', $expiry=0)
 {   
  if( is_array( $string ) )
  {
   $string = json_encode($string); // uicms::json($string, true, 'en');
  }     
  $string = str_pad($expiry ? $expiry + TIME : 0, 10, 0).$string;  
  $strArr = str_split(base64_encode($string));
  $strCount = count($strArr);  
  $skey = static::md5($skey);  
  foreach (str_split($skey) as $key => $value)
  {
   $key < $strCount && $strArr[$key].=$value;
  }
  return str_replace(self::$original, self::$later, join('', $strArr));
 }
 /**
 * @use ption::de($string, $key);
 * @param String $string 需要解密的字串
 * @param String $skey 密钥
 * @return String
 */
 static public function de($string = '', $skey = '')
 {   
  $strArr = str_split(str_replace(self::$later,self::$original,$string),2);
  $strCount = count($strArr);
  $skey = static::md5($skey);
  foreach (str_split($skey) as $key => $value)
  {
   $key < $strCount && $strArr[$key][1] === $value && $strArr[$key] = $strArr[$key][0];
  }   
  $result = base64_decode(join('', $strArr));
  if(substr($result, 0, 10) == 0 || substr($result, 0, 10) - TIME > 0)
  {
   return substr($result, 10);
  }
  else
  {
   return false;
  }   
 }  
}

2. 用法如下:

$str['username'] = 'oschina';
$str['pw'] = '123456';
$str['huoxin'] = '!@#$%^&';
echo "string : " . $str . " <br />";
echo "encode : " . ($enstring = ption::en($str)) . '<br />';
echo "decode : " . ption::de($enstring);

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
拼音码表的生成
Oct 09 PHP
php连接mssql数据库的几种方法
Feb 21 PHP
微信公众平台开发关注及取消关注事件的方法
Dec 23 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
Jan 11 PHP
php网页版聊天软件实现代码
Aug 12 PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 PHP
什么是PHP文件?如何打开PHP文件?
Jun 27 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
Apr 09 PHP
PHP实现浏览器格式化显示XML的方法示例
Jan 22 PHP
tp5 实现列表数据根据状态排序
Oct 18 PHP
php通过分类列表产生分类树数组的方法
Apr 20 #PHP
PHP统计数值数组中出现频率最多的10个数字的方法
Apr 20 #PHP
PHP查找数值数组中不重复最大和最小的10个数的方法
Apr 20 #PHP
php获取本周星期一具体日期的方法
Apr 20 #PHP
php实现猴子选大王问题算法实例
Apr 20 #PHP
php递归删除指定文件夹的方法小结
Apr 20 #PHP
php动态生成缩略图并输出显示的方法
Apr 20 #PHP
You might like
php 过滤危险html代码
2009/06/29 PHP
FireFox浏览器使用Javascript上传大文件
2013/10/30 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
2014/06/14 Javascript
jquery用data方法获取某个元素上的事件
2014/06/23 Javascript
video.js使用改变ui过程
2017/03/05 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
vue导航栏部分的动态渲染实例
2019/11/01 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
python单线程实现多个定时器示例
2014/03/30 Python
python相似模块用例
2016/03/04 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
简单了解Python生成器是什么
2019/07/02 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
Python实现屏幕录制功能的代码
2020/03/02 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
python中zip()函数遍历多个列表方法
2021/02/18 Python
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
送给他或她的礼物:FUN.com
2018/08/17 全球购物
香港零食网购:上仓胃子
2020/06/08 全球购物
大学生职业生涯规划书模板
2014/01/03 职场文书
质量承诺书格式
2014/05/20 职场文书
国际贸易系求职信
2014/08/09 职场文书
2014年采购员工作总结
2014/11/18 职场文书
2015年幼儿园元旦游艺活动策划书
2014/12/09 职场文书
倡议书范文大全
2015/04/28 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
工作计划范文之财务管理
2019/08/09 职场文书
七年级作文之我的梦想
2019/10/16 职场文书
导游词之海南天涯海角
2019/12/05 职场文书
《总之就是很可爱》新作短篇动画《总之就是很可爱~制服~》将于2022年夏天播出
2022/04/07 日漫
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android