休息请求签名

时间:2018-05-30 13:01:51

标签: javascript node.js rest api

我正在使用Nodejs编写Coinegg客户端。我已经做了另一次交流,一切顺利,经过很多阅读。这次我因为缺乏来自coinegg的信息而陷入困境。

api请求的描述很难解释,也许任何人都有线索。 “签名 - 像”金额“,”价格“,”类型“,”随机数“,”密钥“这样的参数将由'&'组合创建一个新字符串,用Sha256算法加密新字符串,键是md5(私钥)“ 链接:

  

https://www.coinegg.com/explain.api.html

我的代码如下:

const getMessageSignature = (data, secret) => {
    const dataString = qs.stringify(data);
    const hash = new crypto.createHash('md5').update(secret, 'base64').digest('hex');
    const hmac = new crypto.createHmac('sha256', hash).update(dataString, 'base64').digest('hex');
    return hmac;
};

数据将字符串化为key = value& .... 也尝试了它的价值和价值......同样的结果。

发现了另一个javascript api,但他使用了另一个库(crypto-js)而不是装运的库(加密)。

我很困惑和好奇。 最好的问候

1 个答案:

答案 0 :(得分:0)

为dataString和utf-8编码中的秘密创建缓冲区。 然后在utf-8中更新这两个函数并将它们作为十六进制返回。 像这样:

const dataString = qs.stringify(data);
const data_buffer = Buffer.from(dataString, 'utf-8');
const key_buffer = Buffer.from(secret, 'utf-8');
const hash = new crypto.createHash('md5').update(key_buffer, 'utf-8').digest('hex');
const hmac = new crypto.createHmac('sha256', hash).update(data_buffer, 'utf-8').digest('hex');