为什么mcrypt_encrypt会给出错误?

问题描述:

我从这个网站下面的代码。当我运行它,我得到为什么mcrypt_encrypt会给出错误?

Warning: mcrypt_encrypt(): Attempt to use an empty IV, which is NOT recommend in C:\web\apache\htdocs\dev\encrypt.php on line 7 

我在这里做什么错,我如何得到这个权利?

//Key 

$key = 'SuperSecretKey'; 

//To Encrypt: 
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, 'I want to encrypt this', MCRYPT_MODE_CFB); 

//To Decrypt: 
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CFB); 

echo $encrypted; 
echo "<br>"; 
echo $decrypted; 
+0

您是否获得了输出或仅提到警告..? – 2013-04-29 04:41:38

+0

我收到错误的输出。 – Norman 2013-04-29 04:44:27

这不是errorwarning,它Documentation

IV明确解释 - 用于CBC初始化,CFB,OFB模式,并在数据流模式的一些算法。如果您不提供IV,而需要使用算法,则该函数会发出警告并使用IV,并将其所有字节设置为“\ 0”。

只是看看the documentation

IVmcrypt_encrypt的第五个参数。

用于CBC,CFB,OFB模式的初始化以及STREAM模式下的某些算法。如果您不提供IV,而需要使用算法,则该函数会发出警告并使用IV,并将其所有字节设置为“\ 0”。

相同的代码与IV(初始化向量)的所有字节0

$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, 'I want to encrypt this', MCRYPT_MODE_CFB, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"); 
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $encrypted, MCRYPT_MODE_CFB, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");