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.MVC的模板标签系统(四)
Sep 05 PHP
PHP4 与 MySQL 数据库操作函数详解
Dec 06 PHP
PHP5与MySQL数据库操作常用代码 收集
Mar 21 PHP
php截取utf-8中文字符串乱码的解决方法
Mar 29 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
Jul 29 PHP
ThinkPHP写第一个模块应用
Feb 20 PHP
php模拟登陆的实现方法分析
Jan 09 PHP
php文件上传简单实现方法
Jan 24 PHP
PHP响应post请求上传文件的方法
Dec 17 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
如何使用PHP给图片加水印
Oct 12 PHP
使用Yii2实现主从数据库设置
Nov 20 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 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
YII路径的用法总结
2014/07/09 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
js继承的实现代码
2010/08/05 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
Node.js操作Firebird数据库教程
2016/03/04 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
详解vue axios中文文档
2017/09/12 Javascript
微信小程序获取用户openid的实现
2018/12/24 Javascript
vue的注意规范之v-if 与 v-for 一起使用教程
2019/08/04 Javascript
前端如何实现动画过渡效果
2021/02/05 Javascript
Python 使用with上下文实现计时功能
2018/03/09 Python
python三方库之requests的快速上手
2019/03/04 Python
Python实现获取系统临时目录及临时文件的方法示例
2019/06/26 Python
对Python _取log的几种方式小结
2019/07/25 Python
Pytorch DataLoader 变长数据处理方式
2020/01/08 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
python 怎样进行内存管理
2020/11/10 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
Python实现简单的2048小游戏
2021/03/01 Python
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
医药大学生求职简历的自我评价
2013/10/17 职场文书
自荐信封面
2013/12/04 职场文书
初二生物教学反思
2014/02/03 职场文书
领导欢迎词范文
2015/01/26 职场文书
团组织推荐意见
2015/06/05 职场文书
天那边观后感
2015/06/09 职场文书