具有时效性的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 相关文章推荐
文件系统基本操作类
Nov 23 PHP
同一空间绑定多个域名而实现访问不同页面的PHP代码
Dec 06 PHP
php 全文搜索和替换的实现代码
Jul 29 PHP
php获取网页内容方法总结
Dec 04 PHP
PHP 程序员应该使用的10个组件
Oct 31 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
Aug 22 PHP
PHP中new static()与new self()的区别异同分析
Aug 22 PHP
php简单生成随机数的方法
Jul 30 PHP
PHP常用的小程序代码段
Nov 14 PHP
轻松掌握php设计模式之访问者模式
Sep 23 PHP
Yii 2中的load()和save()示例详解
Aug 03 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 01 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中文件上传的一个问题
2010/09/04 PHP
php计算整个目录大小的方法
2015/06/19 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
AngularJS中监视Scope变量以及外部调用Scope方法
2016/01/23 Javascript
阿里云ecs服务器中安装部署node.js的步骤
2016/10/08 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
div实现自适应高度的textarea实现angular双向绑定
2017/01/08 Javascript
用jQuery旋转插件jqueryrotate制作转盘抽奖
2017/02/10 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
d3.js入门教程之数据绑定详解
2017/04/28 Javascript
解决JQuery全选/反选第二次失效的问题
2017/10/11 jQuery
JS实现显示当前日期的实例代码
2018/07/03 Javascript
微信小程序tabBar 返回tabBar不刷新页面
2019/07/25 Javascript
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
使用Python中PDB模块中的命令来调试Python代码的教程
2015/03/30 Python
python传递参数方式小结
2015/04/17 Python
python中查看变量内存地址的方法
2015/05/05 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
python logging通过json文件配置的步骤
2020/04/27 Python
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
Oracle性能调优原则
2012/05/03 面试题
高二英语教学反思
2014/01/19 职场文书
电台编导求职信
2014/05/06 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
学生实习证明模板汇总
2014/09/25 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
行政处罚告知书
2015/07/01 职场文书
遗嘱格式范本
2015/08/07 职场文书
《藏戏》教学反思
2016/02/23 职场文书