Java ve PHP arasındaki AES-256 ile ilgili sorun

0 Cevap java

Ben Java mükemmel şifresini çözebilir Java şifrelemek ne, ama PHP mcrypt şifresini olamaz: Benim sorundur. Ne ben mcrypt ile deşifre edebilirsiniz mcrypt ile şifrelemek, ama Java yapamam.

Ben bir PHP sayfası bir Java uygulaması cryptographed veri göndermek ve almak istiyorum, bu yüzden uyumlu olması gerekir.

İşte ne var ...

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);
}

Koşu:

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

Çıktı:

örnek

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
    );
}

Koşu:

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

Çıktı:

Crypt: örnek�������������������������

Using PHP to crypt "örnek" with key "Zvzpv8/PXbezPCZpxzQKzL/FeoPw68jIb+NONX/LIi8=" I get "YTYhgp4zC+w5IsViTR5PUkHMX4i7JzvA6NJT1FqhoGY=". Using Java to crypt the same thing with the same key I get "+tdAZqTE7WAVPXhB3Tp5+g==".

Ben kodlama ve doğru sırayla Base64 çözme ve ben base64 kodlamak ve Java ve PHP arasındaki decode uyumluluğu test edilmiş ve çalışıyor.

0 Cevap