Мой код должен получить зашифрованный открытый текст с сервера и расшифровать его с помощью 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");
}
Вы можете попробовать библиотеку nacl
. Проверьте это: tweetnacl.js.org. Также это может быть полезно в процессе (если вы решите использовать tweetNacl): stackoverflow.com/questions/51978889/…
Кажется, вы создаете IV при расшифровке. Вы должны передать IV, который использовался для шифрования, методу дешифрования. Это не отвечает на ваш вопрос, но вам нужно это исправить в вашем Java-коде.