具有时效性的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 相关文章推荐
MySQL相关说明
Jan 15 PHP
php中的观察者模式
Mar 24 PHP
php Ubb代码编辑器函数代码
Jul 05 PHP
使用php记录用户通过搜索引擎进网站的关键词
Feb 13 PHP
laravel安装和配置教程
Oct 29 PHP
php中$_GET与$_POST过滤sql注入的方法
Nov 03 PHP
PHP 实现的将图片转换为TXT
Oct 21 PHP
php自定义函数实现二维数组按指定key排序的方法
Sep 29 PHP
php 使用curl模拟ip和来源进行访问的实现方法
May 02 PHP
详解Laravel5.6 Passport实现Api接口认证
Jul 27 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
Aug 20 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接口与接口引用的深入解析
2013/08/09 PHP
php分页代码学习示例分享
2014/02/20 PHP
ThinkPHP中自定义错误页面和提示页面实例
2014/11/22 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
php-msf源码详解
2017/12/25 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
JS模拟按钮点击功能的方法
2015/12/22 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
JavaScript组成、引入、输出、运算符基础知识讲解
2016/12/08 Javascript
JavaScript拖动层Div代码
2017/03/01 Javascript
详解vue axios二次封装
2018/07/22 Javascript
vue实现微信分享功能
2018/11/28 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
bootstrap 日期控件 datepicker被弹出框dialog覆盖的解决办法
2019/07/09 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python运算符重载详解及实例代码
2017/03/07 Python
Python中static相关知识小结
2018/01/02 Python
python 正确保留多位小数的实例
2018/07/16 Python
python新手学习使用库
2020/06/11 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
在校学生职业规划范文
2014/01/08 职场文书
校园招聘策划书
2014/01/09 职场文书
无犯罪记录证明范本
2014/09/15 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
骨干教师事迹材料
2014/12/17 职场文书
初中毕业生自我评价
2015/03/02 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
《弟子规》读后感:知廉耻、明是非、懂荣辱、辨善恶
2019/12/03 职场文书
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS
MySQL学习之基础命令实操总结
2022/03/19 MySQL