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