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 相关文章推荐
PHP foreach循环使用详解与实例代码
May 08 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
php获取网页标题和内容函数(不包含html标签)
Feb 03 PHP
php 判断字符串中是否包含html标签
Feb 17 PHP
PHP使用CURL_MULTI实现多线程采集的例子
Jul 29 PHP
Php连接及读取和写入mysql数据库的常用代码
Aug 11 PHP
php解析字符串里所有URL地址的方法
Apr 03 PHP
php传值赋值和传地址赋值用法实例分析
Jun 20 PHP
PHP如何实现订单的延时处理详解
Dec 30 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
Apr 20 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 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
快速配置PHPMyAdmin方法
2008/06/05 PHP
php 面向对象的一个例子
2011/04/12 PHP
jquery 选择器部分整理
2009/10/28 Javascript
jquery中动态效果小结
2010/12/16 Javascript
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
JS打印gridview实现原理及代码
2013/02/05 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
javascript实现QQ空间相册展示源码
2017/12/12 Javascript
原生JS实现的多个彩色小球跟随鼠标移动动画效果示例
2018/02/01 Javascript
使用Angular CLI生成路由的方法
2018/03/24 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
vue如何截取字符串
2019/05/06 Javascript
[01:37]TI4西雅图DOTA2前线报道 VG拿下首胜教练357给出获胜秘诀
2014/07/10 DOTA
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
Python的Django框架中的Context使用
2015/07/15 Python
python算法演练_One Rule 算法(详解)
2017/05/17 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
Python3中列表list合并的四种方法
2019/04/19 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
python 实现汉诺塔游戏
2020/11/28 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
德国机车企业:FC-Moto
2017/10/27 全球购物
有模特经验的简历自我评价
2013/09/19 职场文书
房产转让协议书
2014/04/11 职场文书
建筑学专业自荐书
2014/07/09 职场文书
政府班子四风问题整改措施思想汇报
2014/10/08 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
歌剧魅影观后感
2015/06/05 职场文书
爱国电影观后感
2015/06/19 职场文书
2016教师廉洁从教心得体会
2016/01/13 职场文书
2016年清明节网上祭英烈活动总结
2016/04/01 职场文书