具有时效性的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 启动时报错的简单解决方法
Jan 27 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 PHP
PHP实现单例模式最安全的做法
Jun 13 PHP
YII路径的用法总结
Jul 09 PHP
PHP中IP地址与整型数字互相转换详解
Aug 20 PHP
symfony表单与页面实现技巧
Jan 26 PHP
php实现CSV文件导入和导出
Oct 24 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
Feb 15 PHP
php 类中的常量、静态属性、非静态属性的区别
Apr 09 PHP
PHP框架laravel的.env文件配置教程
Jun 07 PHP
PHP终止脚本运行三种实现方法详解
Sep 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
smarty实例教程
2006/11/19 PHP
第4章 数据处理-php数组的处理-郑阿奇
2011/07/04 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
2013/04/12 Javascript
JS+DIV实现鼠标划过切换层效果的实例代码
2013/11/26 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
2014/04/08 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
详解从Vue.js源码看异步更新DOM策略及nextTick
2017/10/11 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
2020/02/20 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
python从ftp下载数据保存实例
2013/11/20 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
解决tensorflow模型参数保存和加载的问题
2018/07/26 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
实现向右循环移位
2014/07/31 面试题
幼儿园开学温馨提示
2015/07/15 职场文书
社区服务活动感想
2015/08/11 职场文书
PHP获取学生成绩的方法
2021/11/17 PHP