具有时效性的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 相关文章推荐
教你IIS6的PHP最佳配置方法
Sep 05 PHP
php MYSQL 数据备份类
Jun 19 PHP
PHP上传文件时文件过大$_FILES为空的解决方法
Nov 26 PHP
ThinkPHP独立分组使用的注意事项
Nov 25 PHP
学习php设计模式 php实现命令模式(command)
Dec 08 PHP
PHP Yaf框架的简单安装使用教程(推荐)
Jun 08 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
Aug 12 PHP
php中引用&amp;的用法分析【变量引用,函数引用,对象引用】
Dec 12 PHP
详解提高使用Java反射的效率方法
Apr 29 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
May 23 PHP
thinkPHP5框架接口写法简单示例
Aug 05 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 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提取字符串中的图片地址[正则表达式]
2011/11/12 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
2014/12/04 PHP
php列出mysql表所有行和列的方法
2015/03/13 PHP
php实现的简单日志写入函数
2015/03/31 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
Windows2003下php5.4安装配置教程(Apache2.4)
2016/06/30 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
javascript调试过程中找不到哪里出错的可能原因
2013/12/16 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
js判断元素是否隐藏的方法
2014/06/09 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
在IE8上JS实现combobox支持拼音检索功能
2016/05/23 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
Vue.2.0.5过渡效果使用技巧
2017/03/16 Javascript
bmob js-sdk 在vue中的使用教程
2018/01/21 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
[35:39]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第二场 11.22
2020/11/24 DOTA
Python自动登录126邮箱的方法
2015/07/10 Python
一篇文章快速了解Python的GIL
2018/01/12 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
如何用Python合并lmdb文件
2018/07/02 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
Python tkinter之Bind(绑定事件)的使用示例
2021/02/05 Python
canvas实现滑动验证的实现示例
2020/08/11 HTML / CSS
Ellos瑞典官网:北欧地区时尚、美容和住宅领域领先的电子商务网站
2019/11/21 全球购物
导游的职业规划书范文
2013/12/27 职场文书
2014年会演讲稿范文
2014/01/06 职场文书
教导主任竞聘演讲稿
2014/05/16 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
离职感谢信
2015/01/21 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
单位更名证明
2015/06/18 职场文书
七年级作文之游记
2019/12/11 职场文书