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自定义函数实现代码
Dec 30 PHP
解析PHP对现有搜索引擎的调用
Jun 25 PHP
php实现执行某一操作时弹出确认、取消对话框
Dec 30 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
Aug 21 PHP
laravel 5 实现模板主题功能
Mar 02 PHP
PHP消息队列用法实例分析
Feb 12 PHP
php设计模式之委托模式
Feb 13 PHP
PHP实现基于mysqli的Model基类完整实例
Apr 08 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
Sep 11 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
Sep 26 PHP
php解决安全问题的方法实例
Sep 19 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
是否存在第一台收音机的说法
2021/03/01 无线电
php下安装配置fckeditor编辑器的方法
2011/03/02 PHP
体育彩票排列三组选三算法分享
2014/03/07 PHP
教你在PHPStorm中配置Xdebug
2015/07/27 PHP
PHP第三方登录―QQ登录实现方法
2017/02/06 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
JS判断数组中是否有重复值得三种实用方法
2013/08/16 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
vue实例中data使用return包裹的方法
2018/08/27 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
js纯前端实现腾讯cos文件上传功能的示例代码
2019/05/14 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
JavaScript构造函数原理及实现流程解析
2020/11/19 Javascript
详解Python中的各种函数的使用
2015/05/24 Python
使用Python求解最大公约数的实现方法
2015/08/20 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
python中数据库like模糊查询方式
2020/03/02 Python
Python填充任意颜色,不同算法时间差异分析说明
2020/05/16 Python
Python3 用什么IDE开发工具比较好
2020/11/28 Python
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
财务会计实习报告体会
2013/12/20 职场文书
动物科学专业求职信
2014/07/27 职场文书
小浪底导游词
2015/02/12 职场文书
Python还能这么玩之用Python修改了班花的开机密码
2021/06/04 Python
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python
Oracle 死锁的检测查询及处理
2021/09/25 Oracle