function
generateSbox(t) {
for
(
var
a = [], n = t.length, e = [], o = 0; o < 256; o++)
a.push(o), e.push(t.charCodeAt(o % n));
for
(
var
i = 0, r = 0; r < 256; r++) {
var
s, u;
(s = [a[(i = (i + a[r] + e[r]) % 256)], a[r]]),
(a[r] = s[0]),
(a[i] = s[1]),
(u = [a[(i + 1) % 256], a[(r + 1) % 256]]),
(a[(r + 1) % 256] = u[0]),
(a[(i + 1) % 256] = u[1]);
}
return
a;
}
a = [
216, 156, 159, 86, 8, 143, 254, 92, 113, 3, 228, 74, 37, 80, 146,
68, 71, 42, 137, 132, 170, 85, 13, 196, 226, 152, 120, 176, 184, 36,
195, 233, 123, 230, 89, 10, 121, 180, 5, 219,
]
var
res =
""
for
(
var
n = generateSbox(
"NSSCTF2025"
), e = 0, o = 0, i = 0;
i < a.length;
i++
) {
var
r = [n[(e = (e + n[(o = (o + n[i % 256]) % 256)]) % 256)], n[o]];
(n[o] = r[0]), (n[e] = r[1]);
var
s = n[(n[o] + n[e]) % 256];
res += String.fromCharCode(a[i] ^ s);
}
console.log(res)