title: AES CBC 128 bit encryption using Java and PHP
body: <p>I have recently used the AES CBC 128 algorithm in Java in order to cipher data. Now I need to rebuild that algorithm in PHP, but I have no idea how, because PHP algorithms on the internet return different results. Maybe you can help me. </p>
  
  <p>This is the Java-code to encrypt:</p>
  
  <pre><code>private SecretKeySpec secretKey;
  private IvParameterSpec ivSpec;
  
  public void setKey(String myKey) {
      MessageDigest sha = null;
      try {
          byte[] key = myKey.getBytes("UTF-8");
          sha = MessageDigest.getInstance("SHA-1");
          key = sha.digest(key);
          key = Arrays.copyOf(key, 16);
          secretKey = new SecretKeySpec(key, "AES");
  
          byte[] iv = new String("1010101010101010").getBytes("UTF-8");
          ivSpec = new IvParameterSpec(iv);
  
      } catch (NoSuchAlgorithmException e) {
          e.printStackTrace();
      } catch (UnsupportedEncodingException e) {
          e.printStackTrace();
      }
  }
  
  public String encrypt(String strToEncrypt) {
      try {
          Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
          cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivSpec);
          return Base64.encode(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
      } catch (Exception e) {
          e.printStackTrace();
      }
      return null;
  }
  
  public String decrypt(String strToDecrypt) {
      try {
          Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
          cipher.init(Cipher.DECRYPT_MODE, secretKey, ivSpec);
          return new String(cipher.doFinal(Base64.decode(strToDecrypt)));
      } catch (Exception e) {
          e.printStackTrace();
      }
      return null;
  }
  
  public static void main(String[] args) {
  
      AESText aes = new AESText();
      final String secretKey = "com.secure.test.projectjasdS/FjkGkGhkGjhG786Vjfg=tjGFGH";
      aes.setKey(secretKey);
  
      String originalString = "test set se ts et set s et se";
      String encryptedString = aes.encrypt(originalString);
      String decryptedString = aes.decrypt(encryptedString);
  
      System.out.println("origin: " + originalString);
      System.out.println("encrypted: " + encryptedString);
      System.out.println("decrypted: " + decryptedString);
  }
  </code></pre>
  
  <p>This is my php code:</p>
  
  <pre><code>    protected $key;
      protected $method = 'AES-128-CBC';
      protected $iv = '1010101010101010';
      protected $option = OPENSSL_CIPHER_AES_128_CBC;
  
      function __construct($key)
      {
          $this-&gt;key = $key;
      }
  
      public function encrypt($data) {
          if (is_null($data)) {
              return "Error " . INVALID_PARAMS_ENCRYPTIONS . ": Data is null ";
          }
          $enc = openssl_encrypt($data, $this-&gt;method, $this-&gt;key, $this-&gt;option, $this-&gt;iv);
          return base64_encode($enc);
      }
  
      public function decrypt($data) {
          if (is_null($data)) {
              return "Error " . INVALID_PARAMS_ENCRYPTIONS . ": Data is null ";
          }
          $data = base64_decode($data);
          $dec = openssl_decrypt($data, $this-&gt;method, $this-&gt;key, $this-&gt;option, $this-&gt;iv);
          return $dec;
      }
  </code></pre>
  
  <p>When I encrypted data from java encryption, This result cannot decrypt on Php decryption.</p>
  
  <p>Can you guys possibly help me with building a PHP script, that returns the same results with java encryption?</p>