美文网首页
移位算法实现

移位算法实现

作者: firaga | 来源:发表于2019-03-13 09:32 被阅读0次

    目标: 实现字符串移位加密.

    缺点: 密钥传输

    const DIC =':abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

    public static function sDecode($s)

    {

    $sKey      ='vjJ3LKNENnrvvRc9HPl5NxRQR5tRrHW';

    $a          = str_split($s);

    $aKey      = str_split($sKey);

    $iKeyLength = count($aKey);

    $aDic      = str_split(self::DIC);

    $iDicLength = count($aDic);

    $kp        =0;

    $o          ='';

    foreach ($a as $c) {

    $step = ord($aKey[$kp %$iKeyLength]);

    $dp  =self::ctn($c) -$step;

    while ($dp <0) {

    $dp +=$iDicLength;

    }

    //            echo $dp . chr(9) . $aDic[$dp] . chr(10);

                $o    .=$aDic[$dp];

    $line = [$c,self::ctn($c),$step,$dp,$aDic[$dp]];

    //            echo implode(chr(9), $line) . chr(10);

                $kp++;

    }

    return $o;

    }

    public static function sEncode($s)

    {

    $sKey      ='vjJ3LKNENnrvvRc9HPl5NxRQR5tRrHW';

    $a          = str_split($s);

    $aKey      = str_split($sKey);

    $iKeyLength = count($aKey);

    $aDic      = str_split(self::DIC);

    $iDicLength = count($aDic);

    $kp        =0;

    $o          ='';

    foreach ($a as $c) {

    $n    =self::ctn($c);

    $step = ord($aKey[$kp %$iKeyLength]);

    //            echo $n.chr(9).$step.chr(9).$kp%$iKeyLength.chr(10);

                $dp = ($n +$step) %$iDicLength;

    $o  .=$aDic[$dp];

    $kp++;

    }

    return $o;

    }

    private static function ctn($c)

    {

    $aDic = str_split(self::DIC);

    $aMap = array_flip($aDic);

    return isset($aMap[$c]) ?$aMap[$c] :'|';

    }

    相关文章

      网友评论

          本文标题:移位算法实现

          本文链接:https://www.haomeiwen.com/subject/kbnapqtx.html