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

yipeiwu_com7年前PHP代码库
复制代码 代码如下:

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

相关文章

因str_replace导致的注入问题总结

因str_replace导致的注入问题总结

研究了下replace的注入安全问题。 一般sql注入的过滤方式就是引用addslashes函数进行过滤。 他会把注入的单引号转换成\',把双引号转换成\",反斜杠会转换成\\等 写一...

PHP最新抖音视频解析接口源码

<?php function GetVideos($url) {     $ch = curl_init();...

golang与php实现计算两个经纬度之间距离的方法

本文实例讲述了golang与php实现计算两个经纬度之间距离的方法。分享给大家供大家参考,具体如下: golang版本: 复制代码 代码如下:package main import (...

php include加载文件两种方式效率比较

先来说说两种方式: 1)定义一个字符串变量,里面保存要加载的文件列表。然后foreach加载。 复制代码 代码如下: $a = '/a.class.php;/Util/b.class.p...

php实现递归的三种基本方式

递归函数是我们常用到的一类函数,最基本的特点是函数自身调用自身,但必须在调用自身前有条件判断,否则无限无限调用下去。实现递归函数可以采取什么方式呢?本文列出了三种基本方式。理解其原来需要...