具有时效性的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 4.2书写安全的脚本
Oct 09 PHP
Php获取金书网的书名的实现代码
Jun 11 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
使用php get_headers 判断URL是否有效的解决办法
Apr 27 PHP
php中strtotime函数用法详解
Nov 15 PHP
PHP中使用break跳出多重循环代码实例
Jan 21 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
May 11 PHP
PHP扩展迁移为PHP7扩展兼容性问题记录
Feb 15 PHP
Smarty保留变量用法分析
May 23 PHP
PHP格式化显示时间date()函数代码
Oct 03 PHP
PHP的mysqli_set_charset()函数讲解
Jan 23 PHP
PHP的微信支付接口使用方法讲解
Mar 08 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
各种咖啡的英文名子是什么
2021/03/03 新手入门
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
用JavaScript隐藏控件的方法
2009/09/21 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
jQuery实现的多级下拉菜单效果代码
2015/08/24 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
vue2中filter()的实现代码
2017/07/09 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
python二分法实现实例
2013/11/21 Python
简单上手Python中装饰器的使用
2015/07/12 Python
Python制作词云的方法
2018/01/03 Python
Python简单I/O操作示例
2019/03/18 Python
详解如何管理多个Python版本和虚拟环境
2019/05/10 Python
Python实现实时数据采集新型冠状病毒数据实例
2020/02/04 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
2020/09/24 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
FLIR美国官网:热成像, 夜视和红外摄像系统
2018/07/13 全球购物
关于VPN
2012/06/10 面试题
小学生期末自我鉴定
2014/01/19 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
清明节演讲稿
2014/05/27 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
财务稽核岗位职责
2015/04/13 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
团日活动总结格式
2015/05/11 职场文书
2015年新农村建设工作总结
2015/05/22 职场文书
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers