DES / ECB / PKCS5Padding-Entschlüsselung in PHP

Ich bin in der Notwendigkeit, mit PHP (oder Javascript) einige Service-Aufrufe zu entschlüsseln. Ich habe den ganzen Tag damit verbracht, dies zu erreichen, aber ich konnte es nicht richtig entschlüsseln.

Als Referenz hat mir der Dienstanbieter den folgenden Entschlüsselungsbeispielcode in Java gesendet:

<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>

Ich denke, ich bin auf dem richtigen Weg mit:

<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>

Aber ehrlich gesagt bin ich sicher, dass ich alles mit dem $ iv creationg und $ keyword setup (oder vielleicht mit $ data oder $ decrypted types?) Vermassle. Die Funktion pkcs5_unpad lautet wie folgt:

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

Ich bin nicht nur ein Anfänger in PHP, sondern auch in Kryptografietechniken. Könnten Sie mir bitte helfen, dieses Problem zu lösen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage