使用PHP简单实现对URL加密解密的办法

前言

如何使用PHP对URL进行加密解密操作?我相信很多没有经验的人都无能为力,因此,本文总结了问题产生的原因及解决方法,希望你能通过这篇文章解决这个问题,下面由小薛来教大家如何使用PHP简单实现对URL的加密解密。

加密函数如下所示:

/**
* @param $txt
* @param string $key
* @return string
* @author: 一只薛眠羊 <www.xuemy.cn>
* @name: lock_url
* @describe: 加密函数
*/
public function lock_url($txt,$key='www.xuemy.cn') {
    $txt = $txt.$key;
    $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
    $nh = rand(0,64);
    $ch = $chars[$nh];
    $mdKey = md5($key.$ch);
    $mdKey = substr($mdKey,$nh%8, $nh%8+7);
    $txt = base64_encode($txt);
    $tmp = '';
    $i=0;
    $j=0;
    $k = 0;
    for ($i=0; $i<strlen($txt); $i++) {$k = $k == strlen($mdKey) ? 0 : $k;
        $j = ($nh+strpos($chars,$txt[$i])+ord($mdKey[$k++]))%64;
        $tmp .= $chars[$j];
    }
    return urlencode(base64_encode($ch.$tmp));
}

解密函数如下所示:

/**
* @param $txt
* @param string $key
* @return string
* @author: 一只薛眠羊 <www.xuemy.cn>
* @name: unlock_url
* @describe: 解密函数
*/
public function unlock_url($txt,$key='www.xuemy.cn') {$txt = base64_decode(urldecode($txt));
    $chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-=+";
    $ch = $txt[0];
    $nh = strpos($chars,$ch);
    $mdKey = md5($key.$ch);
    $mdKey = substr($mdKey,$nh%8, $nh%8+7);
    $txt = substr($txt,1);
    $tmp = '';
    $i=0;
    $j=0;
    $k = 0;
    for ($i=0; $i<strlen($txt); $i++) {$k = $k == strlen($mdKey) ? 0 : $k;
        $j = strpos($chars,$txt[$i])-$nh - ord($mdKey[$k++]);
        while ($j<0) $j+=64;
        $tmp .= $chars[$j];
    }
    return trim(base64_decode($tmp),$key);
}
© 版权声明
THE END
喜欢就支持一下吧
点赞15赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容