为什么mcrypt_encrypt会出错?

时间:2013-04-29 04:38:17

标签: php

我从这个网站获得了以下代码。当我运行它时,我得到了

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;

3 个答案:

答案 0 :(得分:2)

error不是warningDocumentation

中明确说明了这一点
  

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

答案 1 :(得分:1)

只需查看the documentation

IVmcrypt_encrypt的第五个参数。

  

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

答案 2 :(得分: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");