我正在尝试找到一种合适的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
答案 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');