Einführung
Die Vigenere-Chiffre ist ein Algorithmus, der zum Verschlüsseln und Entschlüsseln des Textes verwendet wird. Die Vigenere-Chiffre ist ein Algorithmus zur Verschlüsselung eines alphabetischen Textes, der eine Reihe miteinander verflochtener Caesar-Chiffren verwendet. Es basiert auf den Buchstaben eines Schlüsselworts. Es ist ein Beispiel für eine polyalphabetische Substitutions-Chiffre. Dieser Algorithmus ist leicht zu verstehen und zu implementieren. Dieser Algorithmus wurde erstmals 1553 von beschrieben Giovan Battista Bellaso . Es verwendet eine Vigenere-Tabelle oder ein Vigenere-Quadrat zur Ver- und Entschlüsselung des Textes. Die Vigenere-Tabelle wird auch Tabula Recta genannt.
Zwei Methoden führen die Vigenere-Verschlüsselung durch.
Methode 1
Wenn die Vigenere-Tabelle angegeben ist, erfolgt die Verschlüsselung und Entschlüsselung bei dieser Methode mithilfe der Vigenere-Tabelle (26 * 26-Matrix).
Beispiel: Der Klartext ist „JAVATPOINT“ und der Schlüssel ist „BEST“.
Um einen neuen Schlüssel zu generieren, wird der angegebene Schlüssel zirkulär wiederholt, solange die Länge des Klartextes nicht mit der Länge des neuen Schlüssels übereinstimmt.
Verschlüsselung
c# enthält eine Zeichenfolge
Der erste Buchstabe des Klartextes wird mit dem ersten Buchstaben des Schlüssels kombiniert. Die Klartextspalte „J“ und die Schlüsselzeile „B“ schneiden das Alphabet von „K“ in der Vigenere-Tabelle, sodass der erste Buchstabe des Chiffretexts „K“ ist.
Ebenso wird der zweite Buchstabe des Klartextes mit dem zweiten Buchstaben des Schlüssels kombiniert. Die Klartextspalte „A“ und die Schlüsselzeile „E“ überschneiden sich mit dem Alphabet von „E“ in der Vigenere-Tabelle, sodass der zweite Buchstabe des Chiffretexts „E“ ist.
Dieser Prozess wird kontinuierlich fortgesetzt, bis der Klartext fertig ist.
Geheimtext = KENTUTGBOX
Entschlüsselung
Die Entschlüsselung erfolgt über die Schlüsselreihe in der Vigenere-Tabelle. Wählen Sie zunächst die Zeile des Schlüsselbuchstabens aus, ermitteln Sie die Position des Chiffretextbuchstabens in dieser Zeile und wählen Sie dann die Spaltenbezeichnung des entsprechenden Chiffretexts als Klartext aus.
Beispielsweise steht in der Zeile des Schlüssels „B“ und der Chiffretext ist „K“, und dieser Chiffretextbuchstabe erscheint in der Spalte „J“, das heißt, der erste Klartextbuchstabe ist „J“.
Als nächstes steht in der Zeile des Schlüssels „E“ und der Chiffretext ist „E“, und dieser Chiffretextbuchstabe erscheint in der Spalte „A“, das heißt, der zweite Klartextbuchstabe ist „A“.
Dieser Vorgang wird kontinuierlich fortgesetzt, bis der Chiffretext fertig ist.
Klartext = JAVATPOINT
Beispiel für einen Alpha-Beta-Beschnitt
Methode 2
Wenn die Vigenere-Tabelle nicht angegeben ist, erfolgt die Verschlüsselung und Entschlüsselung bei dieser Methode mithilfe der algebraischen Vigenar-Formel (wandeln Sie die Buchstaben (A-Z) in die Zahlen (0-25) um).
Die Formel der Verschlüsselung lautet:
UNDich= (Sich+ Kich) gegen 26Die Entschlüsselungsformel lautet:
Dich= (Eich- Kich) gegen 26Wenn überhaupt (Dich) wird negativ (-ve), in diesem Fall addieren wir 26 zum negativen Wert.
Wo,
E bezeichnet die Verschlüsselung.
Suchalgorithmen
D bezeichnet die Entschlüsselung.
P bezeichnet den Klartext.
K bezeichnet den Schlüssel.
Hinweis: „i“ bezeichnet den Versatz der i-ten Zahl der Buchstaben, wie in der Tabelle unten gezeigt.
Beispiel: Der Klartext ist „JAVATPOINT“ und der Schlüssel ist „BEST“.
Verschlüsselung: UNDich= (Sich+ Kich) gegen 26
Klartext | J | A | IN | A | T | P | Ö | ICH | N | T |
Klartextwert (P) | 09 | 00 | einundzwanzig | 00 | 19 | fünfzehn | 14 | 08 | 13 | 19 |
Schlüssel | B | UND | S | T | B | UND | S | T | B | UND |
Schlüsselwert (K) | 01 | 04 | 18 | 19 | 01 | 04 | 18 | 19 | 01 | 04 |
Geheimtextwert (E) | 10 | 04 | 13 | 19 | zwanzig | 19 | 06 | 01 | 14 | 23 |
Geheimtext | K | UND | N | T | IN | T | G | B | Ö | X |
Entschlüsselung: Dich= (Eich- Kich) gegen 26
Wenn der (Di)-Wert in irgendeinem Fall negativ (-ve) wird, addieren wir in diesem Fall 26 zum negativen Wert. Wie der dritte Buchstabe des Geheimtextes;
binär zu bcd
N = 13 und S = 18
Dich= (Eich- Kich) gegen 26
Dich= (13 - 18) gegen 26
Dich= -5 gegen 26
Dich= (-5 + 26) gegen 26
Dich= 21
Geheimtext | K | UND | N | T | IN | T | G | B | Ö | X |
Geheimtextwert (E) | 10 | 04 | 13 | 19 | zwanzig | 19 | 06 | 01 | 14 | 23 |
Schlüssel | B | UND | S | T | B | UND | S | T | B | UND |
Schlüsselwert (K) | 01 | 04 | 18 | 19 | 01 | 04 | 18 | 19 | 01 | 04 |
Klartextwert (P) | 09 | 00 | einundzwanzig | 00 | 19 | fünfzehn | 14 | 08 | 13 | 19 |
Klartext | J | A | IN | A | T | P | Ö | ICH | N | T |
Programm:
C Sprache
#include #include using namespace std; int main() { Vigenere cipher('VIGENERECIPHER'); string original = 'I AM INDIAN'; string encrypted = cipher.encrypt(original); string decrypted = cipher.decrypt(encrypted); cout << original << endl; cout << 'Encrypted: ' << encrypted << endl; cout << 'Decrypted: ' << decrypted << endl; } class Vigenere { public: string key; Vigenere(string key) { for (int i = 0; i = 'A' && key[i] key += key[i]; else if (key[i]>= 'a' && key[i] key += key[i] + 'A' - 'a'; } } string encrypt(string text) { string out; for (int i = 0, j = 0; i = 'a' && c <= 2 26 'z') c +="A" - 'a'; else if (c continue; out key[j] * 'a') % j="(j" 1) key.length(); } return out; string decrypt(string text) { for (int i="0," && <="z" ) 26) }; pre> <p> <strong>Output:</strong> </p> <pre> I AM INDIAN Encrypted: SDERFGTUJ Decrypted: IAMINDIAN </pre> <hr></=>
=>