【问题标题】:how to concatenate buffer.toString() output with another string in Node.js如何在 Node.js 中将 buffer.toString() 输出与另一个字符串连接起来
【发布时间】:2012-10-18 23:33:30
【问题描述】:

我正在使用一个简单的套接字脚本来建立与我的《战地英雄》服务器的 rcon 连接。我需要从返回的数据中获取种子,然后将其与密码连接起来,以用于创建我需要的登录哈希。但是字符串不会与普通的字符串方法连接。如果我单独输出字符串,它们显示得很好,但它们根本不会组合,所以我可以散列它们。

var net = require('net');
var crypto = require('crypto');
var md5sum = crypto.createHash('md5');

var HOST = '<ip address>', PORT = <port>,
PASSWORD = '<password>';
var client = new net.Socket();
client.connect(PORT, HOST, function() {
    console.log('CONNECTED TO: ' + HOST + ':' + PORT);
});

client.on('data', function(data) {
    console.log(data.toString());
    response = data.toString();
    if (data.toString().slice(0,10) == "### Digest") {
        var seed = response.slice(17); 
        auth = seed.concat(PASSWORD);
        console.log('auth: '+auth);
        hash = require('crypto').createHash('md5').update(auth).digest("hex");
        console.log(hash);
        //client.write('login '+hash+' \n');
    }
    //client.destroy();
});

client.on('close', function() {
    //do something on close
});

client.on('error', function(err) {
    console.log(err);
});

【问题讨论】:

  • 缓冲工具有用吗? github.com/bnoordhuis/node-buffertools
  • 您说“字符串不会与普通字符串方法连接”。他们会做什么?
  • @WernerVesteras 我有点希望实际上使用本机方法。对于可能有简单解决方案的东西,我对依赖 3rd 方 npm 包不感兴趣。不过非常感谢。
  • @maerics 它去掉了第二个字符串。只显示来自 buffer.toString() 的种子。

标签: string node.js sockets buffer


【解决方案1】:

我找到了适合我的解决方案。不确定我是否结束了,但我决定将两个字符串都传递给新的缓冲区。然后我将它们传递给一个数组来组合它们。 (耸耸肩)我认为会的。有更好的解决方案吗?

var net = require('net');
var crypto = require('crypto');
var md5sum = crypto.createHash('md5');

var HOST = '<ip address>', PORT = <port>,
PASSWORD = '<password>';
var client = new net.Socket();
client.connect(PORT, HOST, function() {
    console.log('CONNECTED TO: ' + HOST + ':' + PORT);
});

client.on('data', function(data) {
    console.log(data.toString());
    response = data.toString();
    if (data.toString().slice(0,10) == "### Digest") {
        var a = new Buffer(response.slice(17));
        var b = new Buffer(PASSWORD);
        var auth = new Array();
        auth += a.toString().replace(/\n/g,'');
        auth += b.toString();
        hash = require('crypto').createHash('md5').update(auth).digest("hex");
        client.write('login '+hash+' \n');
    }
    //client.destroy();
});

client.on('close', function() {
    //do something on close
});

client.on('error', function(err) {
    console.log(err);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2022-08-04
    相关资源
    最近更新 更多