2012-03-11 65 views
3

我从一个页面另一个传递信息与下面的PHP代码..PHP mcrypt_decrypt()问题

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"); 

?> 

但是我收到此错误:

Warning: mcrypt_decrypt() [function.mcrypt-decrypt]: Attempt to use an empty IV, which is NOT recommend in C:\xampp\htdocs\audock\press.php on line 10.

其实,我想要的是用户无法看到查询字符串变量的实际值。

回答

0

结账this post。您不应该使用mcrypt_ecbmcrypt_decrypt,您应该使用mcrypt_encrypt。然后,当使用mcrypt_encrypt进行加密时,您需要创建一个初始化向量,其中包含mcrypt_create_ivdocs here),您应该随后使用它进行解密。

+0

好,我检查..... – 2012-03-11 14:15:04

+0

我得到同样的错误.. – 2012-03-11 14:34:45

+0

Plase在您的文章 – 2012-03-11 14:39:30

0

例以零字节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");