Vigenère-Chiffre
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Javascript</language>
<code id="5d49e0654067a">
var Gitter = {
"A" : ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],
"B" : ["B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A"],
"C" : ["C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B"],
"D" : ["D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C"],
"E" : ["E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D"],
"F" : ["F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E"],
"G" : ["G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F"],
"H" : ["H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G"],
"I" : ["I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H"],
"J" : ["J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I"],
"K" : ["K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J"],
"L" : ["L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K"],
"M" : ["M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L"],
"N" : ["N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M"],
"O" : ["O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N"],
"P" : ["P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O"],
"Q" : ["Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P"],
"R" : ["R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q"],
"S" : ["S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R"],
"T" : ["T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S"],
"U" : ["U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T"],
"V" : ["V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U"],
"W" : ["W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V"],
"X" : ["X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W"],
"Y" : ["Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X"],
"Z" : ["Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y"]
};
function encrypt(Eingabe,Key){
var Ausgabe = "";
var KeyIndex = 0;
for (var i=0; i < Eingabe.length; i++){
var EingabeBuchstabe = Eingabe[i].toUpperCase();
// Alles was nicht A-Z ist, direkt so ausgeben ohne Verschlüsselung
if(EingabeBuchstabe.match(/[^A-Z]/)) {
Ausgabe = Ausgabe + EingabeBuchstabe;
continue;
}
var KeyBuchstabe = Key[KeyIndex].toUpperCase();
var AusgabeBuchstabe = Gitter[EingabeBuchstabe][KeyBuchstabe.charCodeAt(0) - 65];
Ausgabe = Ausgabe + AusgabeBuchstabe;
KeyIndex++;
// wieder vorn anfangen wenn Key aufgebraucht ist
if(KeyIndex >= Key.length) KeyIndex = 0;
}
return Ausgabe;
}
function decrypt(Eingabe,Key){
var Ausgabe = "";
var KeyIndex = 0;
for (var i=0; i < Eingabe.length; i++){
var CryptedBuchstabe = Eingabe[i].toUpperCase();
if(CryptedBuchstabe.match(/[^A-Z]/)) {
Ausgabe = Ausgabe + CryptedBuchstabe;
continue;
}
var KeyBuchstabe = Key[KeyIndex].toUpperCase();
for (var k in Gitter){
if(Gitter[k][KeyBuchstabe.charCodeAt(0) - 65] == CryptedBuchstabe){
Ausgabe = Ausgabe + k;
break;
}
}
KeyIndex++;
// wieder vorn anfangen wenn Key aufgebraucht ist
if(KeyIndex >= Key.length) KeyIndex = 0;
}
return Ausgabe;
}
</code>
<run id="5d49e065406f6">
var Ausgabe1 = encrypt("MORGEN ABEND UM NEUN GEHT'S LOS.","EINFACH");
console.log("Verschlüsselt: "+Ausgabe1);
console.log("Entschlüsselt: "+decrypt(Ausgabe1,"EINFACH"));
// Die Ausgabe als Eingabe bei der anderen Person verwenden
var Ausgabe2 = encrypt(Ausgabe1,"SCHWER");
console.log("Erneut verschlüsseln mit Key2.");
console.log("Verschlüsselt: "+Ausgabe2);
// Die Ausgabe nun entschlüsseln mit Key1
console.log("Nun das Ergebnis entschlüsseln mit Key1.");
var Ausgabe3 = decrypt(Ausgabe2,"EINFACH");
console.log("Entschlüsselt: "+Ausgabe3);
</run>