我正在使用 Nodejs 编写 Coinegg 客户端。我已经做了另一次交流,经过大量阅读后一切都很顺利。这次我因为缺乏来自 coinegg 的信息而陷入困境。
API 请求的描述很难解释,也许有人能找到线索。 "signature -- "amount", "price", "type", "nonce", "key"等参数将通过'&'组合成一个新的字符串,通过Sha256算法对新的字符串进行加密,key为md5(私钥)" 链接:
我的代码如下所示:
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/