具有时效性的php加密解密函数代码

 更新时间:2013年06月19日 10:35:20   作者:  
该函数具有时效性,只要过期就不能解密!通过时间动态加密 加密后数据多样化,增加破解难度

复制代码 代码如下:

<?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);
?>

该函数具有时效性,只要过期就不能解密!通过时间动态加密 加密后数据多样化,增加破解难度

相关文章

  • 解析将多维数组转换为支持curl提交的一维数组格式

    解析将多维数组转换为支持curl提交的一维数组格式

    本篇文章是对将多维数组转换为支持curl提交的一维数组格式实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-07-07
  • php动态生成缩略图并输出显示的方法

    php动态生成缩略图并输出显示的方法

    这篇文章主要介绍了php动态生成缩略图并输出显示的方法,涉及php操作图片的相关技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • php实现httpRequest的方法

    php实现httpRequest的方法

    这篇文章主要介绍了php实现httpRequest的方法,涉及php操作http的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • php强制更新图片缓存的方法

    php强制更新图片缓存的方法

    这篇文章主要介绍了php强制更新图片缓存的方法,实例分析了php结合javascript方法实现针对图片缓存的强制更新功能,非常具有实用价值,需要的朋友可以参考下
    2015-02-02
  • 在yii中新增一个用户验证的方法详解

    在yii中新增一个用户验证的方法详解

    本篇文章是对在yii中新增一个用户验证的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 轻松修复Discuz!数据库

    轻松修复Discuz!数据库

    各位站长经常会遇到的数据库损坏的错误,错误来了就去面对,不要慌张,瞎着急是没有用的。其实熟悉Discuz! 的朋友都知道,Discuz! 后台自带数据库修复工具的,如果数据库损坏导致首页打不开了,但是后台还可以进去。
    2008-05-05
  • PHP的自定义模板引擎

    PHP的自定义模板引擎

    本文将详细介绍PHP中的模板引擎。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • PHP操作Postgresql封装类与应用完整实例

    PHP操作Postgresql封装类与应用完整实例

    这篇文章主要介绍了PHP操作Postgresql封装类,结合实例形式分析了php针对Postgresql数据库常见的连接、查询、统计等操作封装技巧与使用方法,需要的朋友可以参考下
    2018-04-04
  • php加密之discuz内容经典加密方式实例详解

    php加密之discuz内容经典加密方式实例详解

    这篇文章主要介绍了php加密之discuz内容经典加密方式,结合具体实例形式详细分析了discuz加密的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • php基于session实现数据库交互的类实例

    php基于session实现数据库交互的类实例

    这篇文章主要介绍了php基于session实现数据库交互的类,实例分析了php结合session操作数据库的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08

最新评论