PHP - знак плюс с запросом GET

У меня есть скрипт PHP, который выполняет базовое шифрование строки с помощью метода ниже:

<?php
$key = 'secretkey';
$string = $_GET['str'];

if ($_GET['method'] == "decrypt")
{
    $output = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
}

if ($_GET['method'] == "encrypt")
{
    $output= base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
}

echo $output;
?>

Пример URL для шифрования строки будет выглядеть следующим образом:

Encrypt.php? Method = encrypt & str = быстрый лис

Который возвратил бы это как зашифрованную строку:

LCuT / ieVa6cl3 / 4VtzE + jd9QPT3kvHYYJFqG6tY3P0Q =

Теперь, чтобы расшифровать строку, все, что вам нужно сделать, это изменить запрос «method» на «decrypt», вот так:

Encrypt.php? Метод = дешифровать & ул = LCuT / ieVa6cl3 / 4VtzE + jd9QPT3kvHYYJFqG6tY3P0Q =

Единственная проблема заключается в том, что когда эта зашифрованная строка расшифровывается, она возвращает это:

¬ƒ§rYV} ̳5Äš · НИСС (ñïX8Þ; б

Я сузил проблему до знака плюс, который находится в зашифрованной строке. Похоже, что PHP-метод GET переводит знак плюс в пустое пространство. Я искал эту ошибку и обнаружил, что она уже была поданаВот, Я пробовал разные методы, перечисленные на этой странице и другие, но безуспешно. Самое близкое, что я получил, это:

$fixedstring = str_replace(" ", "+", $string);

и затем, используя $ fixedstring в методах шифрования, проблема заключается в том, что при расшифровке все пробелы преобразуются в знаки плюс. Есть идеи?

Я знаю, что использование POST имело бы больше смысла, но я использую GET по определенным причинам. Я пощажу детали.

Ответы на вопрос(4)

Ваш ответ на вопрос