JavaScript Vigenere Entschlüsselung 'hängt sich auf'

Wieder einmal eine Frage meinerseits.

In der Schule haben wir gerade kurz das Vigenere-Verfahren (Verweis auf unser 'Schulbuch': inf-schule.de/kommunikation/kryptologie/historischechiffriersysteme/station_vigenereverfahren) angerissen.
Da ich auch für alle anderen alten Verschlüsselungverfahren (Cäsar, Mono-alphabetische Verschlüsselung, etc.) ein Programm bzw. HTML & Javascript programmiert hatte (die meisten Features eines professionellen Tools (automatische Schlüsselerkennung, etc.)), wollte ich auch noch eins zu diesem Verfahren machen.

Code-Schnipsel:
Code:
// Returns the length of the key
function vigenereFindKeyLength(input) {

    // Initializing
    var matchnum = []; //Gets filled by the indeces (factor) with the count of the factor
    var output = 0; // Output
    // Searches for the same letter sequence 
    for (i = 0; i <= input.length - 2; i++) {
        for (a = i + 1; a <= input.length - 2; a++) {
            // letter sequence found
            if (input.substr(i, 3) == input.substr(a, 3)) {
                var key = a - i; // Distance between the 2 sequences
                var factor = factors(key); // Factors of the key
                // For every factor
                for (b = 0; b < factor.length; b++) {
                    // Fills up the array 'matchnum' with 0 until it's higher or equal the factor
                    while (matchnum.length - 1 < factor[b]) {
                        matchnum.push(0)
                    }
                    // Counts + 1
                    matchnum[factor[b]] += 1;
                    alert(matchnum);
                }
            }
        }
    }
}

// Returns all factors of a number
function factors(dividend) {

    // Initializing
    var output = [];
    // Every number lower the dividend
    for (i = 2; i <= dividend; i++) {
        // Is a factor
        if (dividend % i == 0) {
            // Add to output
            output[output.length] = i;
        }
    }
    // Return output array
    return output;
}
Es wird versucht gleiche 3 zeichenlange Text-Schnipsel zu finden und die am ehesten in Frage kommenden Teiler der Abstände die Schlüssellänge zu bestimmen (Informatik >> Station - Kryptoanalyse beim Vigenere-Verfahren).
Der Parameter 'input' ist der verschlüsselte Text.
Allerdings hängt sich das Ganze immer in der Funktion zur Bestimmung der Schlüssellänge auf (bei alert gibt immer wieder den selben 'alert', die Seite reagiert nicht mehr und FireFox gibt nach einiger Zeit eine Meldung aus).
Bin alles erneut durchgegangen, finde aber, wie so oft bei JS, nicht den Fehler.

Mfg
AnonLuke
 
Was sacht die Debugger Console? Evtl hängt dein Script sich nicht auf sondern die Laufzeit ist zulange?

Kennst du vielleicht von anderen Seiten "Die Seite reagiert nicht / braucht zu lange zum Antworten, wollen Sie das Script beenden?"
 
Zurück
Oben