php mcrypt_decrypt () проблема - PullRequest
3 голосов
/ 11 марта 2012

Я передаю информацию с одной страницы на другую с помощью следующего php-кода ..

Страница index.php:

<?php
include("secure/content/database/db.php");
$sql = mysql_query("SELECT * FROM press");
while($re =  mysql_fetch_array($sql))
{   


$id= (int) $re['id'];                   

$key = "bladeyeshibbir?1%59";

$size = mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB);
$iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM)       

$encrypted_data=mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $id, MCRYPT_MODE_ECB, $iv);

$id = urlencode(base64_encode($encrypted_data));

$page = mysql_real_escape_string(trim($re['pagename']));
$content = mysql_real_escape_string(trim($re['content']));
echo "<li><a href='press.php?id=$id&request=$md'>$page</a></li>";
            }

            ?>

Press.phpстраница

<?php
include("secure/content/database/db.php");
include("header.php");

$id = $_REQUEST["id"];
$key = "bladeyeshibbir?1%59#";

$size = mcrypt_get_iv_size(MCRYPT_CAST_256, MCRYPT_MODE_CFB);
$iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM)       

$decrypted_data=mcrypt_decrypt(MCRYPT_3DES, $key, $id, MCRYPT_MODE_CBC, $iv); 
$url_id = base64_decode(urldecode($decrypted_data));

$request = $_REQUEST['request'];

$sql = mysql_query("SELECT * FROM press WHERE id='$url_id'  ");
$re = mysql_fetch_array($sql);

$pagename = mysql_real_escape_string(trim($re['pagename']));
$content = mysql_real_escape_string(trim($re['content']));  

echo "<title>$pagename</title>";

echo $content;

include("fotter.php");

?>  

НО Я получаю эту ошибку:

Предупреждение: mcrypt_decrypt () [function.mcrypt-decrypt]: Попыткаиспользовать пустой IV, который НЕ рекомендуется в C: \ xampp \ htdocs \ audock \ press.php в строке 10.

На самом деле я хочу, чтобы пользователь не мог видетьфактическое значение переменной строки запроса.

Ответы [ 2 ]

0 голосов
/ 13 марта 2014

Пример с нулевым байтом iv

$encrypted_data=mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $id, MCRYPT_MODE_ECB, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
0 голосов
/ 11 марта 2012

Проверить это сообщение . Вы не должны использовать mcrypt_ecb с mcrypt_decrypt, вы должны использовать mcrypt_encrypt. Затем при шифровании с помощью mcrypt_encrypt вам необходимо создать вектор инициализации с mcrypt_create_iv ( документами здесь ), который впоследствии вы должны будете использовать и для расшифровки.

...