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:
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
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;
}
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