javascript - 休息请求签名

标签 javascript node.js rest api

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

API 请求的描述很难解释,也许有人能找到线索。 "signature -- "amount", "price", "type", "nonce", "key"等参数将通过'&'组合成一个新的字符串,通过Sha256算法对新的字符串进行加密,key为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&.... 也尝试了 value&value...相同的结果。

找到了另一个 javascript api,但他使用了另一个库(crypto-js)而不是附带的库(crypto)。

我被困住了并且很好奇。 最好的问候

最佳答案

为 dataString 和 utf-8 编码的 key 创建一个缓冲区。 然后也以 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');

关于javascript - 休息请求签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50605418/

相关文章:

javascript - 当用户进入该 div 时如何执行按键事件?

javascript - 需要帮助将 HTML 代码渲染到类型为 ="html"的 px-data-column

javascript - 如何放置 XML 值并在 href anchor 标记中使用它?

node.js - 将两个响应数据合并为一 - NodeJS

rest - 无效但可选的凭据的状态代码

javascript - 如何在slickgrid中动态添加列?

php - 如何在 Travis CI 上的 PHP 容器上安装特定的 node.js 版本?

mysql - 我应该为 Node.js 和 MySQL 使用哪个 ORM?

java - 如何避免在基于 Sirius 的应用程序中调用 enqueueGet?

javascript - Angular $HTTP 响应语法错误 : Unexpected token E