Norman
Norman

Reputation: 6365

Why is mcrypt_encrypt giving errors?

I got the code below from this site. When I run it, I get

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

What wrong am I doing here and how do I get this right?

//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;

Upvotes: 1

Views: 2291

Answers (3)

Thorsten Niehues
Thorsten Niehues

Reputation: 14420

Same code with a IV (Initialization Vector) with all bytes to 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");

Upvotes: 0

oezi
oezi

Reputation: 51797

just take a look at the documentation.

IV is the fifth parameter of mcrypt_encrypt.

Used for the initialization in CBC, CFB, OFB modes, and in some algorithms in STREAM mode. If you do not supply an IV, while it is needed for an algorithm, the function issues a warning and uses an IV with all its bytes set to "\0".

Upvotes: 1

Yogesh Suthar
Yogesh Suthar

Reputation: 30488

It is not error its warning, it clearly explained in Documentation

IV - Used for the initialization in CBC, CFB, OFB modes, and in some algorithms in STREAM mode. If you do not supply an IV, while it is needed for an algorithm, the function issues a warning and uses an IV with all its bytes set to "\0".

Upvotes: 2

Related Questions