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",
   ...