-1
ECBモードでAES暗号化を実装しようとしています。コードがあります。ソケットを介してバッファを送信した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);
私はそれをCONSOLE.LOGしようとした場合受け取ったデータはJSONは、JavaScriptオブジェクトに解析され、それがバッファであると言います。復号化しようとすると、「オブジェクトは文字列でもバッファでもありません」というエラーが表示されます。
Aバッファは、JSONのserialzableではありません、それは次のとおりです。
は、私は次のように、これは、受信したデータから、新しいバッファを作成することで動作するようになりましたか? –私はそれを文字列化すると、{"Type": "Buffer"、 "Data": "xxxxxx"}が得られます。私はパースや警告に誤りはありません。バッファを送信する最も良い方法は何ですか? @Artjom B. –