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_SELF的安全问题
Sep 05 PHP
php中实现记住密码自动登录的代码
Mar 02 PHP
PHP获取php,mysql,apche的版本信息示例代码
Jan 16 PHP
php页面缓存方法小结
Jan 10 PHP
Laravel实现用户注册和登录
Jan 23 PHP
php安装swoole扩展的方法
Mar 19 PHP
php中define用法实例
Jul 30 PHP
PHP中Cookie的使用详解(简单易懂)
Apr 28 PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
Laravel学习笔记之Artisan命令生成自定义模板的方法
Nov 22 PHP
thinkPHP+LayUI 流加载实现功能
Sep 27 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抓即时股票信息
2006/10/09 PHP
php下将多个数组合并成一个数组的方法与实例代码
2011/02/03 PHP
php 代码优化之经典示例
2011/03/24 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
不懂JavaScript应该怎样学
2008/04/16 Javascript
js form action动态修改方法
2008/11/04 Javascript
javascript 学习笔记(八)javascript对象
2011/04/12 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
Vue.js路由vue-router使用方法详解
2017/03/20 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
通过nodejs 服务器读取HTML文件渲染到页面的方法
2018/05/17 NodeJs
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
在Express中提供静态文件的实现方法
2019/10/17 Javascript
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
Python实现按当前日期(年、月、日)创建多级目录的方法
2018/04/26 Python
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
Python实现的爬取百度贴吧图片功能完整示例
2019/05/10 Python
Python面向对象之继承和多态用法分析
2019/06/08 Python
Python中一些深不见底的“坑”
2019/06/12 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
使用Python pip怎么升级pip
2020/08/11 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
Python爬虫进阶之爬取某视频并下载的实现
2020/12/08 Python
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2015/09/07 面试题
一套软件开发工程师笔试题
2015/05/18 面试题
优秀教导主任事迹材料
2014/05/09 职场文书
团队精神的演讲稿
2014/05/14 职场文书
暑期培训心得体会
2014/09/02 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
2014年社区卫生工作总结
2014/12/18 职场文书
python基于turtle绘制几何图形
2021/06/15 Python