Как я могу преобразовать этот java-код в javascript

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

Я пробовал cryptojs без успеха. Поскольку шифр IV создан, но массив байтов и javascript не имеют типа данных байта

public static String decrypt(String plainText, String key) throws Exception {
    byte[] clean = new BASE64Decoder().decodeBuffer(plainText);

    int keySize = 16;
    byte[] keyBytes = new byte[keySize];

    byte[] pwbyte = key.getBytes("UTF-8");

    int len = pwbyte.length;

    if (len > keyBytes.length) {
        len = keyBytes.length;
    }

    System.arraycopy(pwbyte, 0, keyBytes, 0, len);
    SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "AES");

    IvParameterSpec ivParameterSpec = new IvParameterSpec(keyBytes);
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
    cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
    byte[] encrypted = cipher.doFinal(clean);

    return new String(encrypted, "UTF-8");
}

person Morteza    schedule 06.01.2019    source источник
comment
stackoverflow.com/questions/29512858/cryptojs-and-key -iv-длина   -  person Elliott Frisch    schedule 06.01.2019
comment
Вы можете попробовать библиотеку nacl. Проверьте это: tweetnacl.js.org. Также это может быть полезно (если вы решите использовать tweetNacl): stackoverflow.com/questions/51978889/   -  person Abrar    schedule 06.01.2019
comment
Кажется, вы создаете IV при расшифровке. Вы должны передать IV, который использовался для шифрования, методу расшифровки. Это не отвечает на ваш вопрос, но вам нужно исправить это в вашем коде Java.   -  person Darlesson    schedule 26.02.2019


Ответы (1)


Я столкнулся с проблемой несоответствия типов данных для байтового массива при переписывании драйвера Python на Node.js. В моем случае я использовал tweetnacl, который является портом библиотеки NACL на JS. Я решил проблему здесь.

Надеюсь это поможет.

person Abrar    schedule 06.01.2019