Есть задача передавать зашифрованную информацию клиент-сервер 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() с указанием соответствующей кодировки
чесно говоря, не особо вникал в твой код, но попробуй вместо substr() юзать mb_substr() с указанием соответствующей кодировки
Спустя 17 минут, 26 секунд (5.02.2011 - 13:36) alexnsk написал(а):
Проблема оказывается была в нулевых символах - "\0".
Проблему решил заменой:
$text = str_replace("\0","",$text);
Проблему решил заменой:
$text = str_replace("\0","",$text);