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 长文章分页函数 带使用方法,不会分割段落,翻页在底部
Oct 22 PHP
PHP foreach循环使用详解与实例代码
May 08 PHP
php目录操作函数之获取目录与文件的类型
Dec 29 PHP
PHP sprintf() 函数的应用(定义和用法)
Jun 29 PHP
Zend的AutoLoad机制介绍
Sep 27 PHP
PHP生成不同颜色、不同大小的tag标签函数
Sep 23 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
PHP常用的小程序代码段
Nov 14 PHP
php登录超时检测功能实例详解
Mar 21 PHP
Laravel模型事件的实现原理详解
Mar 14 PHP
php微信开发之音乐回复功能
Jun 14 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
对盗链说再见...
2006/10/09 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
php通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
PHP命名空间namespace用法实例分析
2016/09/27 PHP
PHP构造函数与析构函数用法示例
2016/09/28 PHP
PHP表单验证内容是否为空的实现代码
2016/11/14 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
PHP框架Laravel中实现supervisor执行异步进程的方法
2017/06/07 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
基于jquery创建的一个图片、视频缓冲的效果样式插件
2012/08/28 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
2013/11/22 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
Angular使用ng-messages与PHP进行表单数据验证
2016/12/28 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
使用angular帮你实现拖拽的示例
2017/07/05 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
Vue项目中设置背景图片方法
2018/02/21 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
uniapp与webview之间的相互传值的实现
2020/06/29 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
Python使用Selenium模块实现模拟浏览器抓取淘宝商品美食信息功能示例
2018/07/18 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
python如何统计代码运行的时长
2019/07/24 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
2020/06/05 Python
FILA德国官方网站:来自意大利的体育和街头服饰品牌
2019/07/19 全球购物
UNIX文件系统分类
2014/11/11 面试题
《改造我们的学习》心得体会
2014/11/07 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
员工规章制度范本
2015/08/07 职场文书
css display table 自适应高度、宽度问题的解决
2021/05/07 HTML / CSS
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python