"emulating" MySQL aes_encrypt() in PHP

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View

mysql> select aes_encrypt('gordan', 'abc');
| aes_encrypt('gordan', 'abc') |
| pb9??_?0?LI             |

I would like to "emulate" that function in PHP. I know that MySQL AES algorithm
is RIJNDAEL_128 so I tried the following code
    $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
    $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    echo mcrypt_ecb (MCRYPT_RIJNDAEL_128, 'abc', 'gordan', MCRYPT_MODE_CBC,

but the encrypted string is different from the MySQL one :-(
and ideas?


Re: "emulating" MySQL aes_encrypt() in PHP

Gordan wrote:

Quoted text here. Click to load it

My understanding is that the initialization vector is added to the payload
before encryption - so I've never quite understood why the examples show:
        $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
So it might be worth trying a null iv.

Other considerations include:
1) how is the key padded to the right length (16 chars)
2) maybe the data is the same - it's just being represented differently
(since it seems to be stored by MySQL in binary format)



Site Timeline