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 如何向 MySQL 发送数据
Oct 09 PHP
一个简单php扩展介绍与开发教程
Aug 19 PHP
php5 apache 2.2 webservice 创建与配置(java)
Jan 27 PHP
一个PHP缓存类代码(附详细说明)
Jun 09 PHP
php 字符串压缩方法比较示例
Jan 23 PHP
PHP中常用的转义函数
Feb 28 PHP
ThinkPHP Mobile使用方法简明教程
Jun 18 PHP
Zend Guard使用指南及问题处理
Jan 07 PHP
php使用cookie显示用户上次访问网站日期的方法
Jan 26 PHP
php常量详细解析
Oct 27 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
Dec 28 PHP
PHP命名空间定义与用法实例分析
Aug 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
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
解析strtr函数的效率问题
2013/06/26 PHP
Codeigniter的一些优秀特性总结
2015/01/21 PHP
php数据库操作model类(使用__call方法)
2016/11/16 PHP
php安装扩展mysqli的实现步骤及报错解决办法
2017/09/23 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
jQuery的Ajax的自动完成功能控件简要说明
2013/02/22 Javascript
js innerHTML 改变div内容的方法
2013/08/03 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
2015/03/26 Javascript
javascript中alert()与console.log()的区别
2015/08/26 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
python检测远程udp端口是否打开的方法
2015/03/14 Python
Python实现豆瓣图片下载的方法
2015/05/25 Python
Python数组遍历的简单实现方法小结
2016/04/27 Python
Python使用QRCode模块生成二维码实例详解
2017/06/14 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Python读取csv文件实例解析
2019/12/30 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
什么是规则表达式
2012/05/03 面试题
团支部建设方案
2014/05/02 职场文书
学前班评语大全
2014/05/04 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
离婚起诉书范本
2015/05/18 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
Python内置的数据类型及使用方法
2022/04/13 Python