Descodificación DES / ECB / PKCS5Padding en PHP

Estoy en la necesidad de descifrar con PHP (o Javascript) algunas llamadas de servicio. He pasado todo el día tratando de lograr esto, pero no he podido descifrarlo correctamente.

Como referencia, el proveedor de servicios me envió el siguiente código de muestra de descifrado en Java:

<code>DESKeySpec dks = new DESKeySpec("keyword".getBytes()); 
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey key = keyFactory.generateSecret(dks);

Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
SecureRandom sr = new SecureRandom();  
cipher.init( Cipher.DECRYPT_MODE, key ,sr); 

byte b[] = response.toByteArray();      
byte decryptedData[] = cipher.doFinal( b );
</code>

Creo que estoy en el camino correcto usando:

<code>$td = mcrypt_module_open(MCRYPT_DES, '', 'ecb', '');
$iv_size = mcrypt_enc_get_iv_size($td);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$key = substr($keyword, 0, mcrypt_enc_get_key_size($td));
mcrypt_generic_init($td, $key, $iv);
$decrypted = mdecrypt_generic($td, $data);
$decrypted = pkcs5_unpad($decrypted);
</code>

Pero, francamente, estoy seguro de que estoy arruinando todo con la creación de $ iv y la configuración de $ palabra clave (o quizás con $ datos o tipos de $ descifrados). La función pkcs5_unpad es la siguiente:

<code>function pkcs5_unpad($text)
{
   $pad = ord($text{strlen($text)-1});
   if ($pad > strlen($text)) return false;
   return substr($text, 0, -1 * $pad);
}
</code>

No solo soy un noob en PHP, sino también en técnicas de criptografía ... ¿podría ayudarme, por favor, a resolver este problema?

Respuestas a la pregunta(1)

Su respuesta a la pregunta