I have a small problem with php mcrypt_decrypt
function. Firstly, I use a 16-byte string, and encrypt it using mcrypt_encrypt
; then, I use base64_encode
, and put the output to mcrypt_decrypt
, in order to get the initial string.
But the output is not what's expected. I checked that my base64
decoded string input for decoding is the exact output produced by mcrypt_decrypt
. Here is my code:
//encrypt
$str="KKQT9W4st7vmdkps";
$key="43625A8C1E4330BDF84DDEE3DD105037";
$block = mcrypt_get_block_size('rijndael_128', 'ecb');
$passcrypt=mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_ECB);
echo $passcrypt;
That outputs PTfZ6Ephh8LTxXL4In33Og==
. The decryption script is the following:
//decrypt
$str='PTfZ6Ephh8LTxXL4In33Og==';
$key='43625A8C1E4330BDF84DDEE3DD105037';
$str = base64_decode($str);
$str = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key,
$str, MCRYPT_MODE_ECB,''),"\0");
$block = mcrypt_get_block_size('rijndael_128', 'ecb');
echo $str;
And the output is not KKQT9W4st7vmdkps
, but -nγ kk7Ζn’T
instead. Any ideas? I'm using XAMPP and Apache server.