2013-04-29 141 views
1

我從這個網站下面的代碼。當我運行它,我得到爲什麼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

回答

2

這不是errorwarning,它Documentation

IV明確解釋 - 用於CBC初始化,CFB,OFB模式,並在數據流模式的一些算法。如果您不提供IV,而需要使用算法,則該函數會發出警告並使用IV,並將其所有字節設置爲「\ 0」。

1

只是看看the documentation

IVmcrypt_encrypt的第五個參數。

用於CBC,CFB,OFB模式的初始化以及STREAM模式下的某些算法。如果您不提供IV,而需要使用算法,則該函數會發出警告並使用IV,並將其所有字節設置爲「\ 0」。

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