le salt est possiblement l'IV pour le chainage CBC, ou alors ebcrypt utilise implicitement un IV a zéro sans le dire. il faut l'indiquer a la fonction php.
D'autre part AES CBC ne sait pas chiffrer de chaines arbitraires, mais uniquement des blocs de 16 octets, donc il y a un padding, qui ici n'est défini nulle part dans encrypt.
la fonction php padde avec des zéros.
Je lis aussi et surtout sur le site php que:
Also, MCRYPT_RIJNDAEL_256 is not AES-256, it's a different variant of the Rijndael block cipher. If you want AES-256 in mcrypt, you have to use MCRYPT_RIJNDAEL_128 with a 32-byte key. OpenSSL makes it more obvious which mode you are using (i.e. 'aes-128-cbc' vs 'aes-256-ctr').
C'est probablement ca le problème.
Vive le PHP qui autorise l'utilisation de clés de 256 bits avec l'algo MCRYPT_RIJNDAEL_128
