Попробуйте так:
JS:
/**
 * Зашифровать сообщение AES ключом
 * 
 * @param string шифруемое сообщение
 * @param key ключ, 8 символов от 0 до F
 * @return string зашифрованное сообщение
 */
function encrypt (string, key){
  var mykey = CryptoJS.enc.Hex.parse(key+key+key+key);
  var iv  = CryptoJS.enc.Hex.parse('00000000000000000000000000000000');
  string='_crc_'+string+String.fromCharCode(0);
  var len=string.length;
  var ost=len%16;
  for (var i=0;i<ost-1;i++)
      string=string+String.fromCharCode(getRandomInt(65,90));
  var encrypted = CryptoJS.AES.encrypt(
    string, 
    mykey, 
    {
      keySize: 128 / 8, 
      iv: iv, 
      mode: CryptoJS.mode.CBC, 
      padding: CryptoJS.pad.Pkcs7
    }
  );
  var encr=encrypted.ciphertext.toString(CryptoJS.enc.Hex);
  return encr;
}
/**
 * Расшифровать сообщение AES ключом
 * 
 * @param crypted зашифрованные данные
 * @param key ключ, 8 символов от 0 до F
 * @return string расшифрованное сообщение
 */
function decrypt(crypted, key) {
  try {
    var mykey = CryptoJS.enc.Hex.parse(key+key+key+key);
    var iv  = CryptoJS.enc.Hex.parse('00000000000000000000000000000000');
    var ciphertext = CryptoJS.enc.Hex.parse(crypted);
    var encrypted = new Object();
    encrypted.ciphertext = ciphertext;
    var decrypted = CryptoJS.AES.decrypt(
      encrypted, 
      mykey, 
      {
        keySize: 128 / 8, 
        iv: iv, 
        mode: CryptoJS.mode.CBC, 
        padding: CryptoJS.pad.Pkcs7
      }
    );
    var decr=CryptoJS.enc.Utf8.stringify(decrypted);
  
    var decr2 = "";
    var endIndex = 0;
    for (var i = 0; i<decr.length; i++) {
      if (decr.charCodeAt(i)==0) {
        endIndex=i;
        break;
      }
    }
    
    decr2=decr.substr(0, endIndex);
    
    if (decr2.indexOf('_crc_') !== 0) throw new Error(); 
      
    return decr2.substr(5);
      
  } catch (e) {
      throw "Ошибка расшифровки ответа сервера"; 
  }
}
PHP:
function encrypt ($string, $key) {
    
  //проверяем, чтобы длина ключа была 8 символов
  if (mb_strlen($key,'utf-8') !== 8) 
    throw new Exception ("Длина ключа должна быть 8 символов");
  //устанавливаем тип алгоритма
  $keySize      = MCRYPT_RIJNDAEL_128;
  $mode         = MCRYPT_MODE_CBC;
  //формируем полный ключ, полный ключ состоит из повторяющихся четыре раза ключа, итого 32 байта
  $fullkeystring=$key.$key.$key.$key;
  //преобразуем ключ из строки в байтовый массив
  $mykey=pack("H*",strtoupper($fullkeystring));
  //IV используем нулевой
  $iv=pack("H*",'00000000000000000000000000000000');
  //добавляем к сообщению заголовок, по которому потом будем определять, расшифровалось или нет, в конец записываем 0
  $string='_crc_'.$string.chr(0);
  //дополняем строку до границы разным мусором
  $len=strlen($string);
  $ost=$len % 16;
  for ($i=0;$i<$ost-1;$i++) 
    $string=$string.chr(rand(65, 90));
  //шифруем
  $ciphertext = mcrypt_encrypt($keySize, $mykey, $string, $mode, $iv); 
  //преобразуем байтовый массив в строку содержащую шестнадцатеричный код, и возвращаем ее
  return strtoupper(bin2hex($ciphertext));
}
function decrypt ($crypted, $Key) {
  //проверяем, чтобы длина ключа была 8 символов
  if (mb_strlen($Key,'utf-8') !== 8) 
    throw new Exception ("Неверная длина ключа");
  //устанавливаем тип алгоритма
  $keySize      = MCRYPT_RIJNDAEL_128;
  $mode         = MCRYPT_MODE_CBC;
  //формируем полный ключ, полный ключ состоит из повторяющихся четыре раза ключа, итого 32 байта
  $fullkeystring=$Key.$Key.$Key.$Key;
  //преобразуем ключ из строки в байтовый массив
  $mykey=pack("H*",strtoupper($fullkeystring));
  //IV используем нулевой
  $iv=pack("H*",'00000000000000000000000000000000');
  //преобразуем строку к верхнему регистру, а затем из шестнадцатеричного кода преобразуем в массив байтов
  $BinMessage=pack("H*",strtoupper($crypted));
  //дешифруем сообщение
  $decrypt=mcrypt_decrypt($keySize, $mykey, $BinMessage, $mode, $iv); 
  //обрезаем пробелы
  $result = trim($decrypt);
  //проверяем, корректно ли расшифровалось, или нет
  if (strpos($result,'_crc_') !== false && strpos($result,'_crc_') === 0) {
    //убираем лишний мусор содержащейся в конце строки
    if (strpos($result, chr(0))>0)
      $result = substr($result, 0, strpos($result, chr(0)));
    return substr ($result, 5);  //если все нормально, возвращаем строку
  }
  else throw new Exception ("Неверный ключ шифрования");
}