One Time Pad Decode
by mifeng
JavaScript
function toHex(text) {
return text.split("").map(function (c) {
return c.charCodeAt().toString(16);
}).join("");
}
function toASCII(hex) {
return hex.match(/../g).map(function (h) {
return String.fromCharCode(parseInt(h, 16));
}).join("");
}
function xor(h1, h2) {
var h1chars = h1.match(/../g);
var h2chars = h2.match(/../g);
var result = "";
for (var i = 0; i < h1chars.length; i++) {
var char = parseInt(h1chars[i], 16) ^ parseInt(h2chars[i % h2chars.length], 16);
result += ("0" + char.toString(16)).slice(-2);
}
return result;
}
var key = "It's the eye of the tiger It's the thrill of the fight Rising up to the challenge of our rival And the last known survivor Stalks his pr";
var ciphers = ["0a3b693472353c306c242d2c6f2135003b2645615423282752770c386b53643b26200e543c3a28222700362975542e2a724639263a2069112023283a2e6e3250693a4f6d2d48266822242d2922222b4b45694f2e6f3f3052743a282241356f144e216e3e273c6528413a2001",
"0b31643275272d456945322b6f3846743c2931003d3d472f27731d5473326b313b4570353c3b2c222f654f2f0037292b002226473c3c690147",
"18216827654e48216f452c2b7420466f20202072274926365279062107246f212421003c29242c4c38682a2b0030274575283d28482d6f0747", "18216827654e48236f375920762a3479542b2a6d2425223d52701b3b653f6539483168313a3749253f002e280035263677233b473c3c6106493a3a4e246c303172584f733d25356c2644412d22214e30376f21210e", "18216827654e483c6f3059266121466c3129210035492a243c001d3b07386e3b3f2965302f37454c2e753b46793b3d4563272733483961192c5321272a002138693a240e", "18216827654e482b6f452a206e3c2f62382d4564312a2e363b6f075464326e542a20003929362c4c2d6e36466c3b2622653449302120681d3c27493a266b3c3e6754266e20274561202b2e3922314e292a744f296e232c52743a2c563623720d2a446127482c744c28205800293b3b573a68365525393b3a2b5261005428384b246924255362355c",
...