Impossible d'échanger des données cryptées avec AES-256 entre Java et PHP

Mon problème est le suivant: ce que j'ai chiffrer en Java je peux déchiffrer parfaitement en Java, mais PHP mcrypt ne peut pas déchiffrer. Ce que j'ai chiffrer avec mcrypt je peux déchiffrer avec mcryptmais ne peut pas en Java.

Je veux envoyer et de recevoir des données chiffrées à partir d'une application Java pour une page PHP, j'ai donc besoin d'elle pour être compatible.

Voici ce que j'ai...

JAVA...

public static String crypt(String input, String key){
    byte[] crypted = null;
    try{
        SecretKeySpec skey = new SecretKeySpec(Base64.decodeBase64(key), "AES");
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, skey);
        crypted = cipher.doFinal(input.getBytes());
    }catch(Exception e){
    }
    return Base64.encodeBase64String(crypted);
}

public static String decrypt(String input, String key){
    byte[] output = null;
    try{
        SecretKeySpec skey = new SecretKeySpec(Base64.decodeBase64(key), "AES");
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, skey);
        output = cipher.doFinal(Base64.decodeBase64(input));
    }catch(Exception e){
    }
    return new String(output);
}

En cours d'exécution:

public static void main(String[] args) {
    String key = "Zvzpv8/PXbezPCZpxzQKzL/FeoPw68jIb+NONX/LIi8=";
    String data = "example";
    System.out.println(Cpt.decrypt(Cpt.crypt(data, key), key));
}

De sortie:

example

PHP...

function getEncrypt($sStr, $sKey) {
    return base64_encode(
        mcrypt_encrypt(
            MCRYPT_RIJNDAEL_256, 
            $sKey,
            $sStr,
            MCRYPT_MODE_ECB
        )
    );
}

function getDecrypt($sStr, $sKey) {
    return mcrypt_decrypt(
        MCRYPT_RIJNDAEL_256, 
        $sKey, 
        base64_decode($sStr), 
        MCRYPT_MODE_ECB
    );
}

En cours d'exécution:

$crypt = getDecrypt(getEncrypt($str, $key), $key);
echo "<p>Crypt: $crypt</p>";

De sortie:

Crypt: example�������������������������

À l'aide de PHP pour la crypte "exemple" avec la clé "Zvzpv8/PXbezPCZpxzQKzL/FeoPw68jIb+NONX/LIi8=" je "YTYhgp4zC+w5IsViTR5PUkHMX4i7JzvA6NJT1FqhoGy=".
À l'aide de Java à la crypte de la même chose avec la même clé, j'ai "+tdAZqTE7WAVPXhB3Tp5+g==".

Je suis d'encodage et de décodage en base64 dans le bon ordre, et je l'ai testé en base64 de coder et de décoder la compatibilité entre Java et PHP, et ça fonctionne.

source d'informationauteur LZZ