php URl参数基于base64_encode加密与解密

php url地址中参数加密问题

在我们常用的加密方法中,有的是可逆有些是不可逆的,比如我们经常使用的base64_encode() 和 base64_decode() 为可逆的加密方式,不可逆的我们常用的MD5 等,但是一般url加密当我们涉及到参数的时候都会选择可逆的加密方法,我们今天介绍的方法是在base64_encode上面去改良的,因为base64_encode有些特殊字符被加密以后,参数接收的时候会因为一些特殊字符导致接收参数不对,直接上代码了!
原理很简单就是我们把一些可能存在的特殊字符先处理再加密!

/**
   * @ 路径加密
  **/
function enPssUrl($data, $key="urlPass")
{
    $key    =    md5($key);
    $x        =    0;
    $len    =    strlen($data);
    $l        =    strlen($key);
    $char = "";
    $str = "";
    for ($i = 0; $i < $len; $i++)
    {
        if ($x == $l)
        {
            $x = 0;
        }
        $char .= $key{$x};
        $x++;
    }
    for ($i = 0; $i < $len; $i++)
    {
        $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);
    }
    return base64_encode($str);
}
/**
 * @ 路径解密
 **/
function dePssUrl($data, $key="urlPass")
{
    $key = md5($key);
    $x = 0;
    $data = base64_decode($data);
    $len = strlen($data);
    $l = strlen($key);
    $char = "";
    for ($i = 0; $i < $len; $i++)
    {
        if ($x == $l)
        {
            $x = 0;
        }
        $char .= substr($key, $x, 1);
        $x++;
    }
    $str = "";
    for ($i = 0; $i < $len; $i++)
    {
        if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))
        {
            $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
        }
        else
        {
            $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
        }
    }
    return $str;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP代码中的Base64加密解密工具可以通过以下步骤实现。 加密: 1. 获取要加密的字符串。 2. 将字符串转换为字节数组。 3. 使用ASP代码中的Base64编码函数对字节数组进行编码。 4. 将编码后的字符串作为加密结果返回。 解密: 1. 获取已经加密Base64字符串。 2. 使用ASP代码中的Base64解码函数将字符串解码为字节数组。 3. 将解码后的字节数组转换为字符串。 4. 将解密后的字符串作为解密结果返回。 示例代码如下: ``` ' 加密函数 Function Base64Encode(str) Dim bytes, enc ' 将字符串转换为字节数组 bytes = StrToByteArray(str) ' 使用Base64编码函数进行编码 Set enc = Server.CreateObject("System.Text.Encoding") Base64Encode = enc.EncodeBytes_64(bytes) End Function ' 解密函数 Function Base64Decode(str) Dim bytes, enc ' 使用Base64解码函数进行解码 Set enc = Server.CreateObject("System.Text.Encoding") bytes = enc.DecodeBytes_64(str) ' 将字节数组转换为字符串 Base64Decode = ByteArrayToStr(bytes) End Function ' 将字符串转换为字节数组 Function StrToByteArray(str) Dim i, bytes ReDim bytes(Len(str) - 1) For i = 1 To Len(str) bytes(i - 1) = Asc(Mid(str, i, 1)) Next StrToByteArray = bytes End Function ' 将字节数组转换为字符串 Function ByteArrayToStr(bytes) Dim i, str For i = LBound(bytes) To UBound(bytes) str = str & Chr(bytes(i)) Next ByteArrayToStr = str End Function ``` 使用时,可以调用`Base64Encode`函数进行加密,以及调用`Base64Decode`函数进行解密
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值