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

时间:2013-09-29 00:54:22

标签: php encryption

我有一个加密,我用于一些小的安全性,但我注意到在加密字符串的末尾似乎总是有%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

两者都会解密。我只想清理加密的字符串,以便最后没有额外的字符。

由于

1 个答案:

答案 0 :(得分:2)

它的URL编码为基数64末尾的=,它不会导致问题Why does a base64 encoded string have an = sign at the end