I was looking for an answer but could not find it here. Please excuse me if this question was already asked.
I have a simple code encrypting and decrypting a string, strings look the same, but when comparing them using == they do not appear to be the same, so hashes are different as well..
Here is my code:
$oppa = "rompish";
$opp_enc = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, "key", $oppa, MCRYPT_MODE_ECB);
$opp_dec = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, "key", $opp_enc, MCRYPT_MODE_ECB);
echo $oppa."<br />".$opp_dec."<br />";
if ($oppa == $opp_dec) echo "YAY"; else echo "NOPE";
On the page:
rompish rompish NOPE
Please tell me what I am doing wrong.
Thank you!
mcrypt_encryptpads the string out with zero bytes until it is a multiple of 16.mcrypt_decryptdutifully decrypts this but lacks the information to remove the padding. And you are fooling yourself because the displayed values look the same even thoughoppa_decactually ends with 9 zero bytes. Use a sensible padding scheme instead.