具有时效性的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 相关文章推荐
PR值查询 | PageRank 查询
Dec 20 PHP
php 截取字符串并以零补齐str_pad() 函数
May 07 PHP
php中将汉字转换成拼音的函数代码
Sep 08 PHP
PHP删除HTMl标签的实现代码
Jun 30 PHP
php基于GD库画五星红旗的方法
Feb 24 PHP
CI框架实现cookie登陆的方法详解
May 18 PHP
PHP编写登录验证码功能 附调用方法
May 19 PHP
PHP实现路由映射到指定控制器
Aug 13 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 PHP
Yii框架中用response保存cookie,用request读取cookie的原理解析
Sep 04 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
Sep 30 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 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
Home Coffee Roasting
2021/03/03 咖啡文化
用PHP动态生成虚拟现实VRML网页
2006/10/09 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
Yii基于数组和对象的Model查询技巧实例详解
2015/12/28 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
2014/11/12 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
Javascript类型转换的规则实例解析
2016/02/23 Javascript
一步步教大家编写酷炫的导航栏js+css实现
2016/03/14 Javascript
微信小程序 label 组件详解及简单实例
2017/01/10 Javascript
nodejs中Express与Koa2对比分析
2018/02/06 NodeJs
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
原生js实现轮播图特效
2020/05/04 Javascript
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
分析python动态规划的递归、非递归实现
2018/03/04 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
2019/08/13 Python
docker-py 用Python调用Docker接口的方法
2019/08/30 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
用 Python 制作地球仪的方法
2020/04/24 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
3种方式实现瀑布流布局小结
2019/09/05 HTML / CSS
Zadig&Voltaire官网:法国时装品牌
2018/01/05 全球购物
自我鉴定的范文
2013/10/03 职场文书
美术师范毕业生自荐信
2013/11/16 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
项目合作协议书
2014/09/23 职场文书
2014年语文教学工作总结
2014/12/17 职场文书
工作表扬信
2015/01/17 职场文书
如何使用Maxwell实时同步mysql数据
2021/04/08 MySQL
《Estab Life》4月6日播出 正式PV、主视觉图公开
2022/03/20 日漫