加密例程将 %3D 添加到输出的末尾


Encryption routine adds %3D to the end of ouput

我有一个用于一些次要安全性的加密,但我注意到 out 似乎总是在加密字符串的末尾有 %3D,我不确定为什么。

private static function encrypt($str, $key)
{
    $result = null;
    for ($i = 0; $i < strlen($str); $i++) {
        $char = substr($str, $i, 1);
        $keyChar = substr($key, ($i % strlen($key)) - 1, 1);
        $char = chr(ord($char) + ord($keyChar));
        $result .= $char;
    }
    return urlencode(base64_encode($result));
}

我看不出里面有什么刺眼的东西。

解密字符串时,当我手动删除字符串末尾的额外 %3D 时没有错误。

所以

bnNMTXc0Sjc%3D

bnNMTXc0Sjc

将两者都解密相同。我只想清理加密的字符串,以免末尾有多余的字符。

谢谢

它是 URL 编码,在

基数 64 的末尾带有 =,它不会导致问题 为什么 base64 编码的字符串末尾有一个 = 符号