重新创建pack() - Node.js中的类型函数?

时间:2014-08-01 20:22:38

标签: javascript node.js

我正在尝试找到一种合适的Node.js方法来重新创建此处的功能:https://github.com/fastly/token-functions

具体来说,我在库中的各种语言中找到了“pack()”函数(我相信,可能是我的加密函数?)。这是我目前的实施:

var key = atob('RmFzdGx5IFRva2VuIFRlc3Q='),
time = parseInt( new Date().getTime() / (60 * 1000)),
timeBuf = bufferpack.pack('<Q',time),
timeHash = timeBuf.toString('utf-8'),
hash = crypto.createHmac('sha256',key).update(timeHash).digest('base64');

'hash'始终输出:

RgpiUKREY9HHjlHPTu0T/93afFzSIpO+T3lduomkmg4=

即使'时间'和'timeHash'改变。

我正在使用此处的缓冲包库:https://github.com/ryanrolds/bufferpack

2 个答案:

答案 0 :(得分:0)

bufferpack.pack的第二个参数应该是the documentation in the readme个状态的值数组。 bufferpack.pack('<Q',time)应该是:

bufferpack.pack('<Q', [time])

答案 1 :(得分:0)

快速支持用脚本回复。这是为了将来参考,直到他们将它添加到他们的仓库。

var key = "Fastly Test Token";
var interval = 60;
var number = Math.round(Math.round(new Date().getTime() / 1000) / interval);

var l = (number & 0xffffffff00000000) >> 32;
var r = number & 0x00000000ffffffff;

var timeBuf = bufferpack.pack('<I<I',[r,l]);
var hash = crypto.createHmac('sha256',key).update(timeBuf).digest('base64');