AES — Шифрование в Java и дешифрование в переполнении стека

Почему метод расшифровки PHP не может расшифровать данные, зашифрованные в Java?

Когда я шифрую и дешифрую данные, используя только Java или только PHP, все работает нормально.

У меня есть класс Java для шифрования / дешифрования данных с использованием алгоритма AES / ECB. Ключ шифрования всегда 2a925de8ca0248d7

package com.example.test.helpers;
import android.util.Base64;
import java.nio.charset.StandardCharsets;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

public class Encryptor {

/**
* @param strToEncrypt - data to encrypt
* @param secret - 16 bytes secret
*/
public static String encrypt(String strToEncrypt, String secret) // secret is always 2a925de8ca0248d7
{
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(secret.getBytes(), "AES"));
return Base64.encodeToString(cipher.doFinal(strToEncrypt.getBytes(StandardCharsets.UTF_8)), Base64.DEFAULT);
}
catch (Exception e)
{
System.out.println("Error while encrypting: " + e.toString());
}
return null;
}

/**
* @param strToDecrypt - base64 encoded string to decrypt
* @param secret - 16 bytes secret
*/
public static String decrypt(String strToDecrypt, String secret) // secret is always 2a925de8ca0248d7
{
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding");
cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(secret.getBytes(), "AES"));
return new String(cipher.doFinal(Base64.decode(strToDecrypt, Base64.DEFAULT)));
}
catch (Exception e) {
System.out.println("Error while decrypting: " + e.toString());
}
return null;
}
}

Зашифрованные данные отправляются на сервер, где я пытаюсь расшифровать их с помощью PHP openssl_decrypt

openssl_decrypt($receivedEncryptedBase64Data, 'AES-256-ECB', '2a925de8ca0248d7');

К сожалению openssl_decrypt возвращает пустую строку.

0

Решение

Хорошо, теперь я вижу.
Я должен использовать AES-128-ECB в PHP-коде AES-256-ECB или расширить секретный ключ до 256 байт.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector