具有时效性的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 和 MySQL 基础教程(三)
Oct 09 PHP
php做下载文件的实现代码及文件名中乱码解决方法
Feb 03 PHP
php object转数组示例
Jan 15 PHP
zf框架的registry(注册表)使用示例
Mar 13 PHP
PHP获取一个字符串中间一部分字符的方法
Aug 19 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
Nov 12 PHP
php中explode的负数limit用法分析
Feb 27 PHP
PHP数组编码gbk与utf8互相转换的两种方法
Sep 01 PHP
php使用parse_str实现查询字符串解析到变量中的方法
Feb 17 PHP
php 中的closure用法详解
Jun 12 PHP
PHP实现一个多功能购物网站的案例
Sep 13 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
Dec 20 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中实现进程间通讯
2006/10/09 PHP
thinkPHP的表达式查询用法详解
2016/09/14 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
thinkPHP自动验证机制详解
2016/12/05 PHP
php常用正则函数实例小结
2016/12/29 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
2017/08/03 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
javascript 基础篇1 什么是js 建立第一个js程序
2012/03/14 Javascript
Vue.js每天必学之组件与组件间的通信
2016/09/08 Javascript
JavaScript队列、优先队列与循环队列
2016/11/14 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
详解angularJs模块ui-router之状态嵌套和视图嵌套
2017/04/28 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
使用OpenCV实现仿射变换—旋转功能
2019/08/29 Python
python 实现按对象传值
2019/12/26 Python
python yield和Generator函数用法详解
2020/02/10 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
LightInTheBox法国站:中国跨境电商
2020/03/05 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
最新茶叶店创业计划书
2014/01/14 职场文书
公司联欢晚会主持词
2014/03/22 职场文书
同居协议书范本
2014/04/23 职场文书
支部组织生活会方案
2014/06/10 职场文书
办公室主任岗位职责
2015/01/31 职场文书
南京大屠杀观后感
2015/06/02 职场文书
Python上下文管理器Content Manager
2021/06/26 Python