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

标签 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

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

谢谢

最佳答案

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

关于php - 加密例程将 %3D 添加到输出末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19073343/

相关文章:

php - 如何在 codeigniter 中加入 4 个或更多表

php - 如何在 PHP 中保存早于时间戳的日期

php - 特殊字符如 č,š,ž 从 php 到 android TextView

Swift如何导入rsa key

php - JavaScript 重新加载,而 mysql 结果

php - mod_fcgid : can't apply process slot for/web/cgi-bin/php-fcgi

php - 如何在 Codeigniter 中包含 'activation code'?

c# - BouncyCaSTLe C# PublicKey 不同于 GnuPG

c - 如何解密使用 cbc_encrypt (Linux GCC) 加密的内容

java - 非法 block 大小异常 : Input length must be multiple of 8 when decrypting with padded cipher