具有时效性的php加密解密函数代码


Posted in PHP onJune 19, 2013
<?php
function encode_pass($tex,$key,$type="encode",$expiry=0){
    $chrArr=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
                  'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
                  '0','1','2','3','4','5','6','7','8','9');
    if($type=="decode"){
        if(strlen($tex)<14)return false;
        $verity_str=substr($tex, 0,8);
        $tex=substr($tex, 8);
        if($verity_str!=substr(md5($tex),0,8)){
            //完整性验证失败
            return false;
        }    
    }
    $key_b=$type=="decode"?substr($tex,0,6):$chrArr[rand()%62].$chrArr[rand()%62].$chrArr[rand()%62].$chrArr[rand()%62].$chrArr[rand()%62].$chrArr[rand()%62];    $rand_key=$key_b.$key;    
    //设置时间选项
    $modnum=0;$modCount=0;$modCountStr="";
    if($expiry>0){
        if($type=="decode"){
            $modCountStr=substr($tex,6,1);
            $modCount=$modCountStr=="a"?10:floor($modCountStr);
            $modnum=substr($tex,7,$modCount);
            $rand_key=$rand_key.(floor((time()-$modnum)/$expiry));
        }else{
            $modnum=time()%$expiry;
            $modCount=strlen($modnum);
            $modCountStr=$modCount==10?"a":$modCount;
            $rand_key=$rand_key.(floor(time()/$expiry));            
        }
        $tex=$type=="decode"?base64_decode(substr($tex, (7+$modCount))):"xugui".$tex;
    }else{
        $tex=$type=="decode"?base64_decode(substr($tex, 6)):"xugui".$tex;
    }
    $rand_key=md5($rand_key);


    $texlen=strlen($tex);
    $reslutstr="";
    for($i=0;$i<$texlen;$i++){
        $reslutstr.=$tex{$i}^$rand_key{$i%32};
    }
    if($type!="decode"){
        $reslutstr=trim(base64_encode($reslutstr),"==");
        $reslutstr=$modCount?$modCountStr.$modnum.$reslutstr:$reslutstr;
        $reslutstr=$key_b.$reslutstr;
        $reslutstr=substr(md5($reslutstr), 0,8).$reslutstr;
    }else{
        if(substr($reslutstr,0, 5)!="xugui"){
            return false;
        }
        $reslutstr=substr($reslutstr, 5);
    }
    return $reslutstr;
}
$psa=encode_pass("woshi ceshi yong de ","taintainxousad","encode",120);
echo $psa;
echo "\r\n解密:";
echo encode_pass($psa,"taintainxousad",'decode',120);
?>
该函数具有时效性,只要过期就不能解密!通过时间动态加密 加密后数据多样化,增加破解难度
PHP 相关文章推荐
社区(php&amp;&amp;mysql)四
Oct 09 PHP
php中的时间显示
Jan 18 PHP
PHP中开发XML应用程序之基础篇 添加节点 删除节点 查询节点 查询节
Jul 09 PHP
PHP学习散记_编码(json_encode 中文不显示)
Nov 10 PHP
基于PHP输出缓存(output_buffering)的深入理解
Jun 13 PHP
php实现12306余票查询、价格查询示例
Apr 17 PHP
PHP自毁程序(慎用)
Jul 09 PHP
php语言中使用json的技巧及json的实现代码详解
Oct 27 PHP
学习php设计模式 php实现合成模式(composite)
Dec 08 PHP
变量在 PHP7 内部的实现(二)
Dec 21 PHP
PHP支付宝当面付2.0代码
Dec 21 PHP
PHP explode()函数用法讲解
Feb 15 PHP
一个简单的php加密解密函数(动态加密)
Jun 19 #PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
Jun 19 #PHP
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
Jun 18 #PHP
深入PHP数据加密详解
Jun 18 #PHP
使用array mutisort 实现按某字段对数据排序
Jun 18 #PHP
php多个字符串替换成同一个的解决方法
Jun 18 #PHP
基于PHP读取csv文件内容的详解
Jun 18 #PHP
You might like
解析PHP实现下载文件的两种方法
2013/07/05 PHP
php  单例模式详细介绍及实现源码
2016/11/05 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
javascript在当前窗口关闭前检测窗口是否关闭
2014/09/29 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
jQuery匹配文档链接并添加class的方法
2015/06/26 Javascript
理解AngularJs指令
2015/12/10 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
jQuery实现的简单无刷新评论功能示例
2017/11/08 jQuery
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
2017/12/27 Javascript
通过webpack引入第三方库的方法
2018/07/20 Javascript
JavaScript&quot;模拟事件&quot;的注意要点详解
2019/02/13 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
Python实现读写INI配置文件的方法示例
2018/06/09 Python
django 环境变量配置过程详解
2019/08/06 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
法国最大电子商务平台:Cdiscount
2018/03/13 全球购物
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
2016/11/26 面试题
盛大笔试题
2016/11/05 面试题
工业学校毕业生自荐信范文
2014/01/03 职场文书
建筑工程毕业生自我鉴定
2014/01/14 职场文书
化学教师教学反思
2014/01/17 职场文书
给幼儿园老师的表扬信
2014/01/19 职场文书
学生会离职感言
2014/02/11 职场文书
万年牢教学反思
2014/02/15 职场文书
运动会入场词50字
2014/02/20 职场文书
2014年高考决心书
2014/03/11 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
企业财务人员岗位职责
2015/04/14 职场文书
怎样做好公众演讲能力?
2019/08/28 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
Java框架入门之简单介绍SpringBoot框架
2021/06/18 Java/Android