PHP自定义加密,PHP加密


//解密

function anmaOut($RuleStr,$EncryptStr="",$Type=1){

$SinkOrder="xacdefghijklmbnopqrstuvwyz";

$RuleLen = strlen($RuleStr); ? ? ? ? ? ? ? ? ? ?//渗透码长度,隔1取1

for($i=1;$i<$RuleLen;$i++){

$inChar=substr($RuleStr,$i,1); ? ? ? ? ? ? ?//取出渗透码字符

$inNum=strpos($SinkOrder,$inChar); ? ? ? ? ?//将 渗透码字母 转为数字

$oldStr.=substr($EncryptStr,$inNum,1); ? ? ?//从加密码中读取原文字符

$i++;

}

return $oldStr;

}

//加密开始

//随机码(载体)

$ReferenceMark="abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";

for($i=0;$i<32;$i++){

$motherSTR[$i]=$ReferenceMark[rand(0,60)];

}

//渗透序号码(不变)

$SinkOrder="xacdefghijklmbnopqrstuvwyz";

function anmaIn($oldStr,$SinkOrder,$motherSTR){

$len = strlen($oldStr);

//渗透过程

$SinkOrderTemp=$SinkOrder;

$RuleStr="";

for($i=0;$i<$len;$i++){

$tl= strlen($SinkOrderTemp)-1; ? ? ? ? ? ? ? ? ?//渗透码长度

$DisturbChar=rand(0,9); ? ? ? ? ? ? ? ? ? ? ? ? //随机干扰码(数字0-9)

$inChar=$SinkOrderTemp[rand(0,$tl)]; ? ? ? ? ? ?//渗透码字母

if ($inChar!="")

$inNum=strpos($SinkOrder,$inChar); ? ? ? ? ? ? ?//将 渗透码字母 转为数字

$motherSTR[$inNum]=substr($oldStr,$i,1); ? ? ? ?//原文字符替代随机码某位置的字符

$RuleStr.=$DisturbChar.$inChar; ? ? ? ? ? ? ? ? //完整渗透码

$SinkOrderTemp = str_replace($inChar, "",$SinkOrderTemp);//新的渗透序号码

}

//渗透结果

$EncryptStr="";

for($i=0;$i<32;$i++){

$EncryptStr.=$motherSTR[$i];

}

$reValue=$RuleStr."|".$EncryptStr;

return $reValue;

}

//加密结束

$test = anmaIn('id=2015&name=super',$SinkOrder,$motherSTR);

var_dump($test);

$testData = explode('|', $test);

$oldStr = anmaOut($testData[0], $testData[1]);

var_dump($oldStr);