1

いくつかのマイナーなセキュリティに使用する暗号化がありますが、暗号化された文字列の末尾に常に %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

どちらも同じものを復号化します。最後に余分な文字がないように、暗号化された文字列をクリーンアップしたいだけです。

ありがとう

4

1 に答える 1

2

base 64 の末尾に = を使用して URL エンコードを行うと、問題は発生しません。base64 でエンコードされた文字列の末尾に = 記号があるのはなぜですか

于 2013-09-29T00:58:17.997 に答える