Conversión de código Java a PHP con AES y Cipher

Me resulta difícil convertir una pieza de código a PHP desde Java. Busqué en Internet sobre el significado de cada línea de código escrita en mi ejemplo de código de Java, pero no encontré ninguno. Quiero entender qué hace cada línea en este ejemplo en particular.

Esto es lo que probé.

function my_aes_encrypt($key, $data) {
 if(16 !== strlen($key)) $key = hash('MD5', $key, true);
 $padding = 16 - (strlen($data) % 16);
     $data .= str_repeat(chr($padding), $padding);
     return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_ECB, str_repeat("\0", 16)));
 }
function my_aes_decrypt($str, $key){ 
     $str = base64_decode($str);
     $str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $str, MCRYPT_MODE_ECB);
     $block = mcrypt_get_block_size('rijndael_128', 'ecb');
     $pad = ord($str[($len = strlen($str)) - 1]);
     $len = strlen($str);
     $pad = ord($str[$len-1]);
     return substr($str, 0, strlen($str) - $pad);
}

Convertir de Java a PHP

//provided key 
byte[] keyBinary = DatatypeConverter.parseBase64Binary("r/RloSflFkLj3Pq2gFmdBQ==");  
SecretKey secret = new SecretKeySpec(keyBinary, "AES");    

// encrypted string   
byte[] bytes = DatatypeConverter.parseBase64Binary("IKWpOq9rhTAz/K1ZR0znPA=="); 

// iv 
byte[] iv = DatatypeConverter.parseBase64Binary("yzXzUhr3OAt1A47g7zmYxw==");       
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
cipher.init(Cipher.DECRYPT_MODE, secret, new IvParameterSpec(iv)); 
String msisdn = new String(cipher.doFinal(bytes), "UTF-8"); 

Sería genial si me hicieran saber los detalles de cada línea escrita en Java.

Respuesta 1

Tengo un Enum, que devuelve el género de gender char: public enum Gender {FEMALE ('F'), MALE ('M'); género de char privado; Género (char gender) {this.gender = gender; ...

En la literatura JDBC a menudo encuentro fragmentos como void databaseCall () {Connection con = null; Sentencia de declaración = intento nulo {con = getConnection (...); ...

Sabemos que el conjunto de cadenas de pasantes de Java se basa en el patrón de diseño Flyweight. También el objeto String es inmutable. ¿Es obligatorio que todos los objetos que usan el patrón Flyweight sean inmutables? . ...

Tengo una lista de cadenas que quiero mostrar en una tabla HTML distribuida de la manera más uniforme posible en un número específico de columnas. public String toHtmlTable (Colección <String> valores, int ...