已经翻译了大部分,在后段落遇到了难题:
function i(e, t) {
var n = new Array(256);
var a = new Array(e.length);
var r, i = "", o, s, c;
for (r = 0; r < 256; r++) {
n[r] = r;
i = (i + n[r] + t.charCodeAt(r % t.length)) % 256;
s = n[r];
n[r] = n[i];
n[i] = s;
}
for (r = 0; r < e.length; r++) {
a[r] = e.charCodeAt(r);
}
for (o = 0; o < a.length; o++) {
r = (r + 1) % 256;
i = (i + n[r]) % 256;
s = n[r];
n[r] = n[i];
n[i] = s;
c = (n[r] + n[i] % 256) % 256; // <-----------------翻译到这了,在这里卡住了,因为js列表索引NaN也有值,在py中我用temp来替代这个值,但是由于n[r] 和 n[i]是否有数,导致这条语句用py怎么也复现不了。
a[o] = String.fromCharCode(a[o] ^ n[c]);
}
return a.join("");
}
var t = i("21\\1²0g611Ü4\u0012\u00057", "请联系 [email protected]"); // <--带入了加密的字符串
console.log(t); //211120161104527
正确结果应该是:211120161104527