为什么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;
答
这不是error
其warning
,它Documentation
IV明确解释 - 用于CBC初始化,CFB,OFB模式,并在数据流模式的一些算法。如果您不提供IV,而需要使用算法,则该函数会发出警告并使用IV,并将其所有字节设置为“\ 0”。
答
只是看看the documentation。
IV
是mcrypt_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");
您是否获得了输出或仅提到警告..? – 2013-04-29 04:41:38
我收到错误的输出。 – Norman 2013-04-29 04:44:27