Verschlüsselungsinkongruenz zwischen Java und PHP

Ich arbeite an einem Verschlüsselungssystem, das die Daten an eine Drittanbieteranwendung weiterleitet. Die Verschlüsselung erfolgt in Java und die Entschlüsselung in PHP. Trotz mehrerer Versuche kann ich den verschlüsselten String nicht von der PHP-Anwendung öffnen lassen.

Zu Testzwecken habe ich ein PHP-Skript erstellt, das auch die Daten verschlüsselt, damit ich die mit Java und PHP verschlüsselten Zeichenfolgen vergleichen kann. Die Ergebnisse stimmen mit dem 21. Zeichen überein und unterscheiden sich dann. Das habe ich:

<code>// Java - Encrypt
private String EncryptAES(String text,String key) throws Exception
    {
      SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "AES");

      // Instantiate the cipher
      Cipher cipher = Cipher.getInstance("AES");

      cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
      byte[] encrypted = cipher.doFinal(text.getBytes());

      String encrypttext = new BASE64Encoder().encode(encrypted);

      return encrypttext;
    }

RESULT: TeUZAFxoFoQy/roPm5tXyPzJP/TLAwR1aIGn2xHbZpsbY1qrKwXfO+F/DAqmeTwB0b8e6dsSM+Yy0zrQt22E2Q== 
</code>

und

<code>// PHP - Encrypt
<?php

$encrypt =  $crypt = openssl_encrypt($toCrypt,"AES256","key-32-char-long");
echo $encrypt; 

?>

RESULT: TeUZAFxoFoQy/roPm5tXyC05wta1Z5YOXcq4OtgFoSbfVi/bHAuD6B5tDthT8EcGXQir08UAx0QvcqRJ2fJmbQ==
</code>

Offensichtlich wird etwas richtig gemacht, weil ein Teil der Zeichenfolgen übereinstimmt, aber offensichtlich stimmt nicht alles, weil der Rest nicht übereinstimmt. Auch wenn ich versuche, den Java-String in PHP zu entschlüsseln, passiert nichts:

<code>// PHP - Decrypt
<?php
$toDecrypt = "TeUZAFxoFoQy/roPm5tXyPzJP/TLAwR1aIGn2xHbZpsbY1qrKwXfO+F/DAqmeTwB0b8e6dsSM+Yy0zrQt22E2Q==";
$decrypt = openssl_decrypt($toDecrypt,"AES256","<key-32-char-long>");
echo $decrypt;

?>

RESULT: <nothing>
</code>

Hat jemand eine Idee, was passieren könnte?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage