약간의 보안을 위해 사용하는 암호화가 있지만 암호화 된 문자열의 끝에 항상 % 3D가있는 것으로 나타났습니다. 그 이유는 확실하지 않습니다. .암호화 루틴은 출력 마지막에 % 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는
같은 암호를 해독 것 모두. 암호화 된 문자열을 정리하여 끝에 여분의 문자가 없도록하고 싶습니다.
감사
Base64로'='로 출력을 채 웁니다에게 발생하지 않습니다베이스 (64)의 끝 부분에 =로 URL 인코딩. '='URL 인코딩은'% 3D'입니다. – Ryan
적절한 암호화를 사용하지 않는 이유는 무엇입니까? 'mcrypt_encrypt' 함수는 비교적 쉽고,이 함수보다 훨씬 안전합니다. (공격적은 아니지만, 자신이하는 일을 알고있는 사람들이 작성한 동료 검토 코드는 훨씬 안전합니다.) –