Я пытался зашифровать некоторые сообщения, используя библиотеку «crypto» в NodeJS, и получаю следующую ошибку:
(узел: 31732) UnhandledPromiseRejectionWarning: Ошибка: ошибка: 0607F08A: процедуры цифрового конверта: EVP_EncryptFinal_ex: данные не кратны длине блока
в Cipheriv.final (внутренний / crypto / cipher.js: 164: 28)
в self.test (...)
self.test = async function(info, object) {
let message = {
info: info,
object: object
};
let iv = crypto.randomBytes(16)
let key = Buffer.from(config.key, 'utf8');
let cipher = crypto.createCipheriv("aes-128-ecb", key, '');
cipher.setAutoPadding(false)
let encrypted = cipher.update(JSON.stringify(message));
encrypted = Buffer.concat([iv, encrypted, cipher.final()]);
encrypted = encrypted.toString('base64');
console.log(encrypted);
}
Ошибка возникает из вызова cipher.final()
, как видно из стека выше.
Я не могу понять, что говорит эта ошибка и как ее устранить.К сожалению, из-за ограничений (я пытаюсь отправить зашифрованные данные по UDP), я не могу использовать алгоритмы, такие как CBC (сообщения не принимаются в том же порядке, в котором они зашифрованы).
Любая помощь в значительной степениоценили!