[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу разобраться с функцией mcrypt
alexnsk
Всем привет:

Есть задача передавать зашифрованную информацию клиент-сервер GET-запросом. При этом при дешифровании переменной, мы получаем корректное значение переменной + вконце �����. Подскажите как избавиться от "�����".

Пример:

Отправляем event_report = 123, кодируем, раскодируем и получаем:

123�����

Пример кода:

<html>
<body>
<?php

/*Шифрование сообщения*/
function CryptMessage($message, $password)
{
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
srand();
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypt_text = mcrypt_encrypt(MCRYPT_BLOWFISH, $password, $message, MCRYPT_MODE_ECB, $iv);

return $iv.$crypt_text;
}

/*Расшифровка сообщения*/
function DeCryptMessage($message, $password)
{
$iv_size = mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB);
$iv = substr($message, 0, $iv_size);
$crypt_text = substr($message, $iv_size);
return mcrypt_decrypt(MCRYPT_BLOWFISH, $password, $crypt_text, MCRYPT_MODE_ECB, $iv);
}

?>

//Форма для отправки кодировки.

<form method="get" action="crypt.php">

Event_Report:<input type="text" name="event_report"><br>

Status_alarm:<input type="text" name="status_alarm"><br>

Description:<input type="text" name="description"><br>

<input type="submit" name="submit1" value="Enter">

</form>

<?php

if ($submit) {

$event_report = CryptMessage($event_report, 'Password');
//echo "$event_report"/n;
$status_alarm = CryptMessage($status_alarm, 'Password');
//echo "$status_alarm"/n;
$description = CryptMessage($description, 'Password');
//echo "$description /n";


$event_report = DeCryptMessage($event_report, 'Password');
$status_alarm = DeCryptMessage($status_alarm, 'Password');
$description = DeCryptMessage($description, 'Password');

echo "$event_report \n";
echo "$status_alarm \n";
echo "$description \n";

}
?>



Спустя 45 минут, 20 секунд (5.02.2011 - 13:14) alex12060 написал(а):
А у тебя не в utf сохранен файл?

Спустя 5 минут, 21 секунда (5.02.2011 - 13:19) Invis1ble написал(а):
alexnsk
чесно говоря, не особо вникал в твой код, но попробуй вместо substr() юзать mb_substr() с указанием соответствующей кодировки

Спустя 17 минут, 26 секунд (5.02.2011 - 13:36) alexnsk написал(а):
Проблема оказывается была в нулевых символах - "\0".
Проблему решил заменой:

$text = str_replace("\0","",$text);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.