AES-шифрование в Java - в каком режиме? - PullRequest
0 голосов
/ 28 февраля 2019

Мне нужно перенести некоторый код с java на javascript, который обрабатывает шифрование.Я не могу воспроизвести тот же зашифрованный текст, что и в существующем коде, учитывая тот же ключ.

Я подозреваю, что не могу определить правильный режим.Прикрепление фрагмента кода -

public String encrypt(String message, String enc_key) throws Exception {
    try {
        initEncrypt(enc_key);

        byte[] encstr = cipher.doFinal(message.getBytes());
        return HexUtil.HextoString(encstr);
    } catch (BadPaddingException nse) {
        throw new Exception("Invalid input String");
    }
}

public void initEncrypt(String key) throws Exception {
    try {
        skeySpec = new SecretKeySpec(HexUtil.HexfromString(key), "AES");
        cipher = Cipher.getInstance("AES");
        // cipher.
        cipher.init(1, skeySpec);
        System.out.println(cipher.getAlgorithm());
    } catch (NoSuchAlgorithmException nsae) {
        throw new Exception("Invalid Java Version");
    } catch (NoSuchPaddingException nse) {
        throw new Exception("Invalid Key");
    }
}

Функция HexToString просто преобразует ключ шестнадцатеричной строки в байтовый массив.

Предоставление ключа - 10663d0b39d73d614116f0b3cbebd666 (шестнадцатеричный) Простой текст- hello, Я получаю - зашифрованный текст - 57C758B2B3A8580658A11DBD95109EC4

Согласно этому ответу so , режим по умолчанию должен быть AES/ECB/PKCS5Padding

Но когда я пытаюсь зашифровать, используя тот жезначения здесь Я получаю зашифрованный текст-

3874350661ABB0B452A4960FE3953C18

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

1 Ответ

0 голосов
/ 28 февраля 2019

Не полагайтесь на поведение по умолчанию. Если вам известны параметры, продолжайте и укажите их.Если вы не знаете параметров, затем найдите и выясните их, а затем укажите их.

Оба зашифрованных сообщения "привет" зашифрованы с помощью вашего ключа ... единственная разница - разные режимы заполнения:

57C758B2B3A8580658A11DBD95109EC4 decrypts to   68656c6c6f0b0b0b0b0b0b0b0b0b0b0b
                                               h e l l o <-- pkcs5 padding  -->

3874350661ABB0B452A4960FE3953C18 decrypts to   68656c6c6f0000000000000000000000
                                               h e l l o <-- zerro padding  -->
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...