Отправка строки, зашифрованной с помощью mcrypt, через параметр URL - декодированный текст искажен

Я возился с простой схемой авторизации. Я думаю, что самый простой способ сделать это без SSL или другой HTTP-аутентификации - это шифрование с общим ключом. Адаптировав простой пример из руководства по PHP, я придумал следующее:

$text = "boggles the invisible monkey will rule the world";
$key = "This is a very secret key";

$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);

$enc = mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $text, MCRYPT_MODE_ECB, $iv);

$iv = base64_encode($iv);
$enc = base64_encode($enc);

echo '<a href="temp2.php?iv='.$iv.'&text='.$enc.'">link</a><br />';

Страница, которая получает этот запрос (temp2.php), выглядит так:

$key = "This is a very secret key";

$iv = base64_decode($_GET["iv"]);
$enc = base64_decode($_GET["text"]);

$crypttext = mcrypt_decrypt(MCRYPT_BLOWFISH, $key, $enc, MCRYPT_MODE_ECB, $iv);

echo "$crypttext<br>";

Это очень близко, но не декодируется должным образом - - он перекликается с

непонятно, что невидимая обезьяна будет править t-; eôügJë

Я не уверен, в чем дело, я пробовал urlencode / urldecode и htmlentities, думая, что, возможно, в запросе был искажен персонаж, но без разницы .

Мне что-то еще не хватает? Возможно, заполнение?

Спасибо

11
задан julio 22 April 2011 в 17:31
поделиться