// dqb 规格接口签名生成器(复刻自 dqb 页面 chunk-e94d3322 的 nt 函数) // 用法: node dqb_sign.js → 输出完整的 s 参数值 function shift(t, e) { for (var s = 0; s < e.length - 2; s += 3) { var r = e.charAt(s + 2); r = r >= "a" ? r.charCodeAt(0) - 87 : Number(r); r = "+" === e.charAt(s + 1) ? t >>> r : t << r; t = "+" === e.charAt(s) ? (t + r) & 4294967295 : t ^ r; } return t; } function sign(t, e) { // t=随机串"AAAAAA.BBBBBB", e=SeriesId 字符串 if (e.length > 30) e = "" + e.substr(0, 10) + e.substr(Math.floor(e.length / 2) - 5, 10) + e.substr(-10, 10); var u = t; // 页面 gtk 分支不触发(t 非 null) var h = u.split("."), m = Number(h[0]) || 0, f = Number(h[1]) || 0; var v = [], g = 0; for (var A = 0; A < e.length; A++) { var y = e.charCodeAt(A); if (y < 128) v[g++] = y; else if (y < 2048) { v[g++] = y >> 6 | 192; v[g++] = y >> 6 & 63 | 128; } else { if ((y & 64512) === 55296 && A + 1 < e.length && (e.charCodeAt(A + 1) & 64512) === 56320) { y = 65536 + ((y & 1023) << 10) + (e.charCodeAt(++A) & 1023); v[g++] = y >> 18 | 240; v[g++] = y >> 12 & 63 | 128; } else { v[g++] = y >> 12 | 224; v[g++] = y >> 6 & 63 | 128; } v[g++] = y & 63 | 128; } } var b = m; var C = "+-a^+6", S = "+-3^+b+-f"; for (var w = 0; w < v.length; w++) { b += v[w]; b = shift(b, C); } b = shift(b, S); b ^= f; if (b < 0) b = 2147483648 + (b & 2147483647); b %= 1e6; return b.toString() + "." + (b ^ m); } function rnd6() { var d = "0123456789", r = ""; for (var i = 0; i < 6; i++) r += d.charAt(Math.floor(Math.random() * d.length)); return r; } var sid = process.argv[2]; var ab = rnd6() + "." + rnd6(); console.log(sid + "." + ab + "." + sign(ab, String(sid)));