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之变量、常量学习笔记
Mar 27 PHP
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
Mar 19 PHP
关于Zend Studio 配色方案插件的介绍
Jun 24 PHP
解析将多维数组转换为支持curl提交的一维数组格式
Jul 08 PHP
Linux下php5.4启动脚本
Aug 03 PHP
php把数组值转换成键的方法
Jul 13 PHP
Yii中实现处理前后台登录的新方法
Dec 28 PHP
PHP 二级子目录(后台目录)设置二级域名
Mar 02 PHP
PHP实现的分页类定义与用法示例
Jul 05 PHP
PHP通过curl获取接口URL的数据方法
May 31 PHP
thinkphp3.2同时连接两个数据库的简单方法
Aug 13 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
typecho插件编写教程(六):调用接口
2015/05/28 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
php中让人头疼的浮点数运算分析
2016/10/10 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
vue-cli 打包使用history模式的后端配置实例
2018/09/20 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
[00:37]2016完美“圣”典风云人物:AMS宣传片
2016/12/06 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
2018/04/18 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
Python操作SQLite数据库过程解析
2019/09/02 Python
python函数中将变量名转换成字符串实例
2020/05/11 Python
Python使用jpype模块调用jar包过程解析
2020/07/29 Python
通俗讲解python 装饰器
2020/09/07 Python
Python爬虫定时计划任务的几种常见方法(推荐)
2021/01/15 Python
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
澳大利亚在线批发商:Simply Wholesale
2021/02/24 全球购物
我看到了用指针调用函数的不同语法形式
2014/07/16 面试题
个人求职信范文分享
2014/01/06 职场文书
教育科研先进个人材料
2014/01/26 职场文书
应届毕业生应聘自荐信范文
2014/02/26 职场文书
中秋节主持词
2014/04/02 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
教师个人培训总结
2015/02/11 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
Redis 异步机制
2022/05/15 Redis