Я пытаюсь реализовать шифрование AES в режиме ECB. Есть код.NodeJS после отправки буфера через консоль сокета говорит, что это не буфер
function encrypt (key, iv, plaintext) {
if(algorithm == 'aes-128-ecb') iv = new Buffer('');
var cipher = crypto.createCipheriv(algorithm, key, iv);
cipher.setAutoPadding(true);
var ciphertext = Buffer.concat([cipher.update(plaintext), cipher.final()]);
return ciphertext; }
function decrypt (key, iv, ciphertext) {
if(algorithm == 'aes-128-ecb') iv = new Buffer('');
var decipher = crypto.createDecipheriv(algorithm, key, iv);
decipher.setAutoPadding(true);
var plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]);
return plaintext; }
Когда я зашифровать буфер я отправить его через сокет, как это:
content = AES.encrypt(clients.getKeyOf(clientID), '', _msg);
_msg = {clientID: clientID,
username: username,
timestamp: date.getHours() + ":" + ('0' + date.getMinutes()).slice(-2),
isEncrypted: isEncrypted,
content: content};
clientSocket.write(JSON.stringify(_msg));
А потом я получаю его и попытаться расшифровать его, как это.
var _msg = JSON.parse(msg);
_msg.content = AES.decrypt(clients.getKeyOf(_msg.clientID), '', _msg.content);
полученные для данных JSON разобран на объект JavaScript, если я пытаюсь console.log, он говорит, что это буфер. Когда я пытаюсь расшифровать его, ошибка говорит: «Объект - это не строка или буфер».
буфер не JSON serialzable, это? –
Когда я строкую его, я получаю {«Тип»: «Буфер», «Данные»: «xxxxxx»}. Я не получаю ошибку при разборе или любом предупреждении. Каков наилучший способ отправки буферов? @Artjom B. –