代码拉取完成,页面将自动刷新
同步操作将从 哆啦比猫/rsms-client 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
var crypto = require('crypto');
var utils = (() => {
var encode_base64 = raw => {
var s = new Buffer(raw).toString('base64');
var npad = 0;
while (s.endsWith('=')) {
npad++;
s = s.substr(0, s.length - 1);
}
return s + npad;
};
var decode_base64 = x => {
var npad = parseInt(x.substr(x.length - 1));
x = x.substr(0, x.length - 1) + "=".repeat(npad);
var s = new Buffer(x, 'base64').toString('utf-8');
return s;
};
var hmac_md5 = (data, key) => {
return crypto.createHmac('md5', key).update(data).digest('hex');
};
var hmac = data => {
return hmac_md5(data, 'rsms');
};
var make_token = (seq, role) => {
var raw_token = JSON.stringify({ seq, role });
var raw_token64 = encode_base64(raw_token);
var auth = hmac(raw_token64);
var auth64 = encode_base64(auth);
return raw_token64 + "." + auth64;
};
var check_token = token => {
var shards = token.split('.');
if (shards.length !== 2) throw 'denied';
var auth = hmac(shards[0]);
var auth64 = encode_base64(auth);
if (auth64 !== shards[1]) throw 'denied';
return shards[0];
};
var unpack_token = token => {
var raw_token64 = check_token(token);
var raw_token = decode_base64(raw_token64);
return JSON.parse(raw_token);
};
return {
make_token, unpack_token
}
})();
module.exports = utils;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。