一个加密和机密(有错误)

<?php
echo '要加密的字符:',$string = "test";
echo '<br />加密:';
echo $encode=  EnCrypt($string);
echo '<br />解密:';
echo DeCrypt($encode);


function DeCrypt($deString)
{
//echo $deString;
$l = strlen($deString);
$X = Array("1","2","3","4","A","B","C","D","E","F","G","H","I","J","K","L","M","0");
$Y = Array("5","6","7","8","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","9");
$keyLen = count($Y);
$tmpEn = "";
for($i=2;$i<$l;$i=$i+4)
{
//echo 'I:',$i;
$x0 = substr($deString,$i - 2,1);
$y0 = substr($deString,$i - 1,1);
$x1 = substr($deString,$i - 0,1);
$y1 = substr($deString,$i + 1,1);
$xIndex = array_search($x1,$X) - array_search($x0,$X);
$yIndex = array_search($y1,$Y) - array_search($y0,$Y);
If($yIndex < 0) $yIndex = $yIndex + $keyLen;
 
$tmpEn = $tmpEn.chr($yIndex * $keyLen + $xIndex);
}
return $tmpEn;
}
 
//加密:
function EnCrypt($string)
{
$len = strlen($string);
$X = Array("1","2","3","4","A","B","C","D","E","F","G","H","I","J","K","L","M","0");
$Y = Array("5","6","7","8","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","9");
$keyLen = count($Y);

for($i=0; $i<$len; $i++)
{
    $tmp[] = ord($string[$i]);
}
 
foreach($tmp as $key => $value)
{
    $xIndex = $value%$keyLen;
    $xArr[] = getArr($keyLen-1, $xIndex);
    $yIndex = ($value - $xIndex)/$keyLen;
    $yArr[] = getArr($keyLen-1, $yIndex);
}
 
foreach($xArr as $key => $value)
{
 
    foreach($value as $keykey => $valuevalue)
    {
     
        $tmptmp[$key]['x'][$keykey]['1'] = $X[$keykey];
        $tmptmp[$key]['x'][$keykey]['2'] = $X[$valuevalue];
    }
}
foreach($yArr as $key => $value)
{
    foreach($value as $keykey => $valuevalue)
    {
     
        $tmptmp[$key]['y'][$keykey]['1'] = $Y[$keykey];
        $tmptmp[$key]['y'][$keykey]['2'] = $Y[$valuevalue];
    }
}
 
foreach($tmptmp as $tmptmpkey => $tmptmpvalue)
{
 
    $xkey = array_rand($tmptmpvalue['x']);
    $yKey = array_rand($tmptmpvalue['y']);
    $resultArr[$tmptmpkey]['x'] = $tmptmpvalue['x'][$xkey];
    $resultArr[$tmptmpkey]['y'] = $tmptmpvalue['y'][$yKey];
 
}
$resultString = '';

foreach($resultArr as $resultArrkey => $resultArrValue)
{
    $resultString .= $resultArrValue['x'][2].$resultArrValue['y'][2].$resultArrValue['x'][1].$resultArrValue['y'][1];
}
return $resultString;
 
}
 
function getArr($max, $value)
{
    for($i=$max;$i>=$value;$i--)
    {
    $tmp[$i] = $i - $value;
    }
    return $tmp;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值