olmadığını söylüyor ECB modunda AES şifrelemesini uygulamaya çalışıyorum. Kod var.NodeJS, arabelleği soket konsolundan gönderdikten sonra tamponun
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; }
ben böyle bir soket üzerinden göndermek tampon şifrelediğinizde:
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));
Ve sonra da alma ve böyle şifresini deneyin.
var _msg = JSON.parse(msg);
_msg.content = AES.decrypt(clients.getKeyOf(_msg.clientID), '', _msg.content);
ve aldıkları verileri JSON bunu console.log çalışırsanız, bunun bir tampon olduğunu söylüyor, bir JavaScript nesnesine ayrıştırılır olduğunu. Şifreyi çözmeyi denediğimde, hata "Nesne bir dizge veya arabellek değil" yazıyor.
A Tampon JSON serialzable değil, öyle:
ben şöyle bu alınan verilerden yeni tampon yaparak çalışmak lazım? –Düzeltdiğimde, {"Type": "Buffer", "Data": "xxxxxx"}. Parse üzerinde bir hata veya herhangi bir uyarı almıyorum. Buffer göndermenin en iyi yolu nedir? @Artjom B. –