具有时效性的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和AJAX创建RSS聚合器的代码
Mar 13 PHP
PHP 加密解密内部算法
Apr 22 PHP
比较简单实用的PHP无限分类源码分享(思路不错)
Oct 13 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
Jul 01 PHP
php中实现获取随机数组列表的自定义函数
Apr 02 PHP
PHP提高编程效率的20个要点
Sep 23 PHP
php文件缓存方法总结
Mar 16 PHP
PHP二进制与字符串之间的相互转换教程
Oct 14 PHP
php动态读取数据清除最右边距的方法
Apr 12 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
PHP实现搜索时记住状态的方法示例
May 11 PHP
windows系统php环境安装swoole具体步骤
Mar 04 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中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
php广告加载类用法实例
2014/09/23 PHP
PHP直接修改表内容DataGrid功能实现代码
2015/09/24 PHP
PHP支付系统设计与典型案例分享
2016/08/02 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
解析jQueryEasyUI的使用
2016/11/22 Javascript
第一个Vue插件从封装到发布
2017/11/22 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
解决layui动态添加的元素click等事件触发不了的问题
2019/09/20 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
Vue-cli打包后如何本地查看的操作
2020/09/02 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014/04/26 Python
Python实现字典去除重复的方法示例
2017/07/31 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
基于Pandas读取csv文件Error的总结
2018/06/15 Python
Python3.5以上版本lxml导入etree报错的解决方案
2019/06/26 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
Python利用Pillow(PIL)库实现验证码图片的全过程
2020/10/04 Python
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
荷兰男士时尚网上商店:Suitable
2017/12/25 全球购物
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
广告学专业毕业生自荐信
2013/09/24 职场文书
简单的大学生自我鉴定
2014/02/18 职场文书
开学典礼决心书
2014/03/11 职场文书
影子教师研修方案
2014/06/14 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
智慧人生:永远不需要向任何人解释你自己
2019/08/20 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python
Python 绘制多因子柱状图
2022/05/11 Python