Шифрование в JAVA и PHP возвращает разные результаты - PullRequest
1 голос
/ 03 апреля 2019

У меня проблемы с попыткой "перевести" некоторый код из JAVA в PHP.

Я уже перепробовал много функций, но у меня ничего не получается, чтобы получить одинаковые результаты с обеих сторон.

JAVA CODE

public static String encrypt(String text, String key, String charset) throws Exception {
    byte[] keyBytes = Base64.decodeBase64(key);
    SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, ALGORITHM);

    Cipher cipher = Cipher.getInstance(ALGORITHM);
    cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
    byte[] textBytes = text.getBytes(charset);
    byte[] bytes = cipher.doFinal(textBytes);

    return new String(Base64.encodeBase64(bytes), charset);
}

КЛЮЧЕВОЙ ПАРАМЕТР -> "NWelNxflgZ + rjP0bo2gi2Q =="
ТЕКСТОВЫЙ ПАРАМЕТР -> «Я тест»
ПАРАМЕТР CHARSET -> "UTF-8"
ПОСТОЯННЫЙ АЛГОРИТМ -> AES

РЕЗУЛЬТАТ -> "13vh3qeuc + kN7NvcKwM6pw =="


PHP-код

function encryptAES($text, $key)
{
    $key = strtohex($key);
    $encrypt = openssl_encrypt($text, 'aes128', $key, OPENSSL_RAW_DATA);
    if (!$encrypt) {
        throw new Exception('AES encryption error');
    }
    return base64_encode($encrypt);
}

function strtohex($x)
{
    $s='';
    foreach (str_split($x) as $c) $s.=sprintf("%02X",ord($c));
    return($s);
}

КЛЮЧЕВОЙ ПАРАМЕТР -> "NWelNxflgZ + rjP0bo2gi2Q =="
ПАРАМЕТР ТЕКСТА -> «Я тест»

РЕЗУЛЬТАТ -> "Vs5pwAC7PK0fQUQQ + PMhKw =="


Кто-нибудь может помочь, пожалуйста, объясните мне, почему не работает мой код?

Большое спасибо, ребята.

1 Ответ

1 голос
/ 03 апреля 2019

Исправлено, проблема была в том, что strtohex дает вам пароль для ввода в консоль.

 public static function encryptAES($data, $AES_key)
    {
        $AES_key = base64_decode($AES_key);
        $encrypt = openssl_encrypt($data, 'aes128', $AES_key);
        if (!$encrypt) {
            throw new Exception('AES encryption error');
        }
        return base64_encode($encrypt);
    }

Вот код результата, он просто конвертировал ключ с base64_decode. Спасибо вам всем!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...