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 shell命令合并图片的代码
Jun 23 PHP
PHP用身份证号获取星座和生肖的方法
Nov 07 PHP
PHP根据IP地址获取所在城市具体实现
Nov 27 PHP
phpmyadmin中禁止外网使用的方法
Nov 04 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 PHP
php使用ZipArchive函数实现文件的压缩与解压缩
Oct 27 PHP
thinkphp3.2实现上传图片的控制器方法
Apr 28 PHP
thinkPHP统计排行与分页显示功能示例
Dec 02 PHP
CI(CodeIgniter)框架实现图片上传的方法
Mar 24 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
Jun 17 PHP
PHP基于DOMDocument解析和生成xml的方法分析
Jul 17 PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 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实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
2019/10/18 PHP
无阻塞加载脚本分析[全]
2011/01/20 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
微信小程序开发探究
2016/12/27 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
JavaScript常见继承模式实例小结
2019/01/11 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
跟老齐学Python之再深点,更懂list
2014/09/20 Python
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
python如何实现异步调用函数执行
2019/07/08 Python
python 高阶函数简单介绍
2021/02/19 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
安德玛比利时官网:Under Armour比利时
2019/08/28 全球购物
机工车间主任岗位职责
2014/03/05 职场文书
党员公开承诺书范文
2014/03/25 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
广场舞大赛策划方案
2014/05/31 职场文书
淘宝活动总结范文
2014/06/26 职场文书
生产实习心得体会范文
2016/01/22 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
导游词之苏州寒山寺
2019/12/05 职场文书
js 实现验证码输入框示例详解
2022/09/23 Javascript