一个简单的php加密解密函数(动态加密)


Posted in PHP onJune 19, 2013
function encode_pass($tex,$key,$type="encode"){
    $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;
    $rand_key=md5($rand_key);
    $tex=$type=="decode"?base64_decode(substr($tex, 6)):$tex;
    $texlen=strlen($tex);
    $reslutstr="";
    for($i=0;$i<$texlen;$i++){
        $reslutstr.=$tex{$i}^$rand_key{$i%32};
    }
    if($type!="decode"){
        $reslutstr=trim($key_b.base64_encode($reslutstr),"==");
        $reslutstr=substr(md5($reslutstr), 0,8).$reslutstr;
    }
    return $reslutstr;
}
$psa=encode_pass("phpcode","taintainxousad");
echo $psa;
echo encode_pass($psa,"taintainxousad",'decode');
PHP 相关文章推荐
第五节 克隆 [5]
Oct 09 PHP
用Zend Encode编写开发PHP程序
Oct 09 PHP
在Windows版的PHP中使用ADO
Oct 09 PHP
用PHPdig打造属于你自己的Google[图文教程]
Feb 14 PHP
PHP中static关键字原理的学习研究分析
Jul 18 PHP
介绍一些PHP判断变量的函数
Apr 24 PHP
PHP获取某个月最大天数(最后一天)的方法
Jul 29 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
ThinkPHP连接Oracle数据库
Apr 22 PHP
php自定义扩展名获取函数示例
Dec 12 PHP
thinkPHP5.1框架路由::get、post请求简单用法示例
May 06 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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
解析CodeIgniter自定义配置文件
Jun 18 #PHP
You might like
php getimagesize 上传图片的长度和宽度检测代码
2010/05/15 PHP
PHP中的gzcompress、gzdeflate、gzencode函数详解
2014/07/29 PHP
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
JS 实现点击a标签的时候让其背景更换
2013/10/15 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
使用ajax+jqtransform实现动态加载select
2014/12/01 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
angularjs实现上拉加载和下拉刷新数据功能
2017/06/12 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
JavaScript实现的原生态Tab标签页功能【兼容IE6】
2017/09/18 Javascript
python列表操作实例
2015/01/14 Python
Python中的数学运算操作符使用进阶
2016/06/20 Python
python面向对象法实现图书管理系统
2019/04/19 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
Python的collections模块真的很好用
2021/03/01 Python
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
美国大码时尚女装购物网站:ELOQUII
2017/12/28 全球购物
新西兰廉价汽车租赁:Snap Rentals
2018/09/14 全球购物
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
党员专题组织生活会发言材料
2014/10/17 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
致毕业季:你如何做好自己的职业生涯规划书?
2019/07/01 职场文书
mysql死锁和分库分表问题详解
2021/04/16 MySQL
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript
Mysql事务索引知识汇总
2022/03/17 MySQL