具有时效性的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 中的一些经验积累
Oct 09 PHP
比较discuz和ecshop的截取字符串函数php版
Sep 03 PHP
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
Sep 24 PHP
php解析字符串里所有URL地址的方法
Apr 03 PHP
ThinkPHP实现递归无级分类――代码少
Jul 29 PHP
Java中final关键字详解
Aug 10 PHP
YII CLinkPager分页类扩展增加显示共多少页
Jan 29 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
基于PHP实现短信验证码接口(容联运通讯)
Sep 06 PHP
PHP实现的mongoDB数据库操作类完整实例
Apr 10 PHP
Laravel开启跨域请求的方法
Oct 13 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 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数字游戏 计算24算法
2012/06/10 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
javascript实现锁定网页、密码解锁效果(类似系统屏幕保护效果)
2014/08/15 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
Javascript连接Access数据库完整实例
2015/08/03 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
Restify中接入Socket.io报Error:Can’t set headers的错误解决
2017/03/28 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
[05:13]TI4 中国战队 机场出征!!
2014/07/07 DOTA
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
Python中的urllib模块使用详解
2015/07/07 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
python多线程并发让两个LED同时亮的方法
2019/02/18 Python
python根据多个文件名批量查找文件
2019/08/13 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
2020/02/24 Python
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
电厂厂长岗位职责
2014/01/02 职场文书
小区停车场管理制度
2014/01/27 职场文书
电焊工岗位职责
2014/03/06 职场文书
交通事故赔偿协议书范本
2014/04/15 职场文书
青春奉献演讲稿
2014/05/08 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
优秀校长事迹材料
2014/12/24 职场文书
战马观后感
2015/06/08 职场文书
社团招新宣传语
2015/07/13 职场文书
2019年大学推荐信
2019/06/24 职场文书
导游词之澳门玫瑰圣母堂
2019/12/03 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技