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
Método de desencriptación PHP
Código original de stevenholder. Más información y código completo en (Github)stevenholder/PHP-Java-AES-Encrypt
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
Excelente, gracias por compartir!!!, para todos los que les marque error, solo usen un key de 16 bytes:
ResponderEliminarencrypt("cadena", "qwdsdrtyfdesxcfr")
Gracias por la aclaración!
EliminarQue bueno que te haya servido. Saludos :D
Lamentablemente en la referencia a mcrypt_decrypt dice "Esta función ha sido declarada OBSOLETA a partir de PHP 7.1.0 y será ELIMINADA a partir de PHP 7.2.0. Su uso está totalmente desaconsejado."
ResponderEliminarSi encuentro el reemplazo les comento por aquí.
Muchas gracias! Lo dejaré indicado en el nombre de la entrada, para que sea más clara la información.
Eliminar