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 相关文章推荐
用函数读出数据表内容放入二维数组
Oct 09 PHP
php db类库进行数据库操作
Mar 19 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
Oct 23 PHP
php preg_filter执行一个正则表达式搜索和替换
Feb 27 PHP
PHP数据类型的总结分析
Jun 13 PHP
php中多维数组按指定value排序的实现代码
Aug 19 PHP
从零开始学YII2框架(三)扩展插件yii2-gird
Aug 20 PHP
PHP内存缓存Memcached类实例
Dec 08 PHP
php生成固定长度纯数字编码的方法
Jul 09 PHP
详解WordPress中添加友情链接的方法
May 21 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
Dec 29 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批量缩放图片的代码[ini参数控制]
2011/02/11 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
php生成无限栏目树
2017/03/16 PHP
PHP设计模式之模板模式定义与用法详解
2018/12/20 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
基于jQuery的消息提示插件之旅 DivAlert(三)
2010/04/01 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
node.js入门教程
2014/06/01 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
基于jquery编写的放大镜插件
2016/03/23 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
微信小程序 Storage更新详解
2019/07/16 Javascript
js判断密码强度的方法
2020/03/18 Javascript
vue组件库的在线主题编辑器的实现思路
2020/04/03 Javascript
vue组件入门知识全梳理
2020/09/21 Javascript
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
对python中UDP,socket的使用详解
2019/08/22 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
Python 中使用 PyMySQL模块操作数据库的方法
2019/11/10 Python
沪江旗下的海量优质课程平台:沪江网校
2017/11/07 全球购物
英国家庭和商业健身器材购物网站:Fitness Options
2018/07/05 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
优秀班集体事迹材料
2014/12/25 职场文书
结婚保证书
2015/01/16 职场文书
毕业生爱心捐书倡议书
2015/04/27 职场文书
活动费用申请报告
2015/05/15 职场文书
2016小学新学期寄语
2015/12/04 职场文书
写作技巧:怎样写好一份优秀工作总结?
2019/08/14 职场文书
总结几个非常实用的Python库
2021/06/26 Python