|
|
|
| Здравствуйте, значит такие дела шифрую и расшифровываю данные при помощи:
<?php
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "очень секретный ключ";
$text = 27;
// Шифруем
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
echo $crypttext."<br />";
// Расшифровываем
$text = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
echo $text."<br />";
?>
|
Все отлично, тока когда расшифровывающие данные подвергаешь htmlspecialchars то вообще нечего не происходит, просто пустая страница, как убираю htmlspecialchars все ок работает, что не так? так нельзя делать? | |
|
|
|
|
|
|
|
для: Dazzl
(13.02.2012 в 12:24)
| | >тока когда расшифровывающие данные
1. Имеется в виду $crypttext или $text?
2. Как применяется htmlspecialchars()? Присвоением переменной
$crypttext = htmlspecialchars($crypttext);
| или непосредственным выводом
echo htmlspecialchars($crypttext);
|
| |
|
|
|
|
|
|
|
для: cheops
(13.02.2012 в 12:28)
| | С одной страница отправляется зашифрованые данные:
<?php
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "очень секретный ключ";
$text = 27;
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
|
?>
Принимающая страница такая:
<?php
$crypttext = htmlspecialchars($_REQUEST['info']);
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "очень секретный ключ";
$text = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
echo $text;
|
?>
если пишу echo htmlspecialchars($text); то ничего не происходит, | |
|
|
|
|
|
|
|
для: Dazzl
(13.02.2012 в 13:35)
| | > $crypttext = htmlspecialchars($_REQUEST['info']);
Эта строка у вас зачем? Вы же зашифрованную строку перековеркиваете! Поэтому она и раскодироваться не может.
Просто:
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = "очень секретный ключ";
$text = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
echo htmlspecialchars($text);
|
И, кстати, как показывает практика, после раскодирования в строке часто появляются лишние пробельные символы. Поэтому не мешает сделать после mcrypt_decrypt(); | |
|
|
|
|
|
|
|
для: Sfinks
(13.02.2012 в 14:02)
| | Вы же зашифрованную строку перековеркиваете!
а если я защититься хочу? | |
|
|
|
|
|
|
|
для: Dazzl
(13.02.2012 в 14:26)
| | Защититься от чего, от XSS-инъекции? В любом случае htmlspecialchars() защитит вас только при выводе в окно браузера, поэтому лучше использовать вариант с echo, как описал выше Sfinks. При расшифровке вы должны подставлять данные без искажений. | |
|
|
|
|
|
|
|
для: cheops
(13.02.2012 в 14:45)
| | $info = $_REQUEST['info'];
Значит в переменную $info мне могут прислать что угодно и воспрепятствовать не получиться? | |
|
|
|
|
|
|
|
для: Dazzl
(13.02.2012 в 14:49)
| | Вы можете проверить, что возвращает mcrypt_decrypt(), если это пустая строка, значит прислали явно попорченные данные. | |
|
|
|
|
|
|
|
для: cheops
(13.02.2012 в 15:01)
| | ясно. спс | |
|
|
|