У меня есть следующая функция шифрования в JAVA. Я пытаюсь написать то же самое шифрование в Node.js, используя шифр из crypto. Но результат не тот. Он использует ту же клавишу и ввод.
JAVA
public static String encrypt(String input, String key) {
byte[] crypted = null;
try {
SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skey);
crypted = cipher.doFinal(input.getBytes());
} catch (Exception e) {
System.out.println(e.toString());
}
String result = new String(Base64.encodeBase64(crypted));
return result.replace("+", "-");
}
Пример вывода: 0HCkcjWj / PoCZ4ZUFJARs / m4kstigMFk8dQnT0uNhog = (44 символа)
Node.js
encrypt = (input, key) => {
const algorithm = 'aes-128-cbc';
key = crypto.scryptSync(key, 'salt', 16);
const iv = Buffer.alloc(16, 0);
const cipher = crypto.createCipheriv(algorithm, key, iv);
cipher.setAutoPadding(true);
let encrypted = cipher.update(input, 'utf8', 'base64');
encrypted += cipher.final('base64');
return encrypted.replace('+','-');
}
Пример вывода: ZHtEbAhrIo7vWOjdMNgW6Q == (24 символа)
Заранее спасибо.