#node.js #angular #encryption
#node.js #angular #шифрование
Вопрос:
У меня есть веб-приложение, написанное на Angular и Node. Я использую пакет crypto-ts в Angular для отправки зашифрованной информации на сервер. У сервера есть код для расшифровки, но я не могу изменить код на сервере. Шифрование выполняется с помощью AES-256-CBC. Мой код не работает, и я не могу определить проблему.
У меня такая ошибка: 06065064: процедуры цифрового конверта: EVP_DecryptFinal_ex: плохое дешифрование
Серверный код :
const Crypto = require('crypto');
const clientOptions = {
cypher: 'AES-256-CBC',
key: 'Must256bytes(32characters)secret',
};
function decrypt(encodedString) {
const strb = base64decode(encodedString);
let encoded = JSON.parse(strb);
encoded.iv = base64decode(encoded.iv);
encoded.value =base64decode(encoded.value, 'binary');
const decipher = Crypto.createDecipheriv(
clientOptions.cypher,
clientOptions.key,
encoded.iv
);
let decrypted = decipher.update(encoded.value, 'binary', 'ascii');
decrypted = decipher.final('ascii');
return JSON.parse(decrypted);
}
function base64decode(string, mode) {
return Buffer.from(string, 'base64').toString(mode || 'ascii');
}
Угловой код:
import { AES, enc, mode, algo, lib } from 'crypto-ts';
const key='Must256bytes(32characters)secret',
const iv = lib.WordArray.random(8);
const crypted = AES.encrypt('test', key, { mode: mode.CBC, iv: iv });
const data = {
iv: btoa(iv.toString()),
value: btoa(crypted.ciphertext.toString()),
};
const out = btoa(JSON.stringify(data));