jueves, 1 de octubre de 2015

Encriptar un texto en lenguaje JAVA y desencriptarlo en PHP (Codificación AES) - < PHP 7.1.0

ACLARACIÓN: Esta función solo puede ser utilizada hasta PHP 7.1.0, ya que ha sido declarada como obsoleta para posteriores versiones.

Código para encriptar un texto en lenguaje JAVA y desencriptarlo en PHP. Codificación AES.
El parámetro "key" es la llave para encriptar/desencriptar y debe ser la misma en ambos lados del código

Método de encriptación JAVA
public static String encrypt(String input, String key){
   byte[] crypted = null;
   try{
     SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES");
       Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
       cipher.init(Cipher.ENCRYPT_MODE, skey);
       crypted = cipher.doFinal(input.getBytes());
     }catch(Exception e){
      System.out.println(e.toString());
     }
     return new String(Base64.encodeBase64(crypted));
 }
 

Método de desencriptación PHP
public static function decrypt($sStr, $sKey) {
  $decrypted= mcrypt_decrypt(
   MCRYPT_RIJNDAEL_128,
   $sKey, 
   base64_decode($sStr), 
   MCRYPT_MODE_ECB
  );
  $dec_s = strlen($decrypted); 
  $padding = ord($decrypted[$dec_s-1]); 
  $decrypted = substr($decrypted, 0, -$padding);
  return $decrypted;
 }

Código original de stevenholder. Más información y código completo en (Github)stevenholder/PHP-Java-AES-Encrypt