logo

Vigenere-cijfer

Invoering

Het vigenere-cijfer is een algoritme dat wordt gebruikt voor het coderen en decoderen van de tekst. Het vigenere-cijfer is een algoritme voor het coderen van een alfabetische tekst dat gebruik maakt van een reeks met elkaar verweven Caesar-cijfers. Het is gebaseerd op de letters van een trefwoord. Het is een voorbeeld van een polyalfabetisch substitutiecijfer. Dit algoritme is gemakkelijk te begrijpen en te implementeren. Dit algoritme werd voor het eerst beschreven in 1553 door Giovan Battista Bellaso . Het gebruikt een Vigenere-tabel of Vigenere-vierkant voor het coderen en decoderen van de tekst. De vigenere tafel wordt ook wel de tabula recta genoemd.

Er zijn twee methoden die het vigenere-cijfer uitvoeren.

Methode 1

Wanneer de vigenere-tabel wordt gegeven, wordt bij deze methode de codering en decodering uitgevoerd met behulp van de vigenere-tabel (matrix 26 * 26).

Vigenere-cijfer

Voorbeeld: De leesbare tekst is 'JAVATPOINT' en de sleutel is 'BEST'.

Om een ​​nieuwe sleutel te genereren, wordt de gegeven sleutel cirkelvormig herhaald, zolang de lengte van de platte tekst niet gelijk is aan de nieuwe sleutel.

Vigenere-cijfer

Encryptie

welke maanden zijn q3

De eerste letter van de leesbare tekst wordt gecombineerd met de eerste letter van de sleutel. De kolom met platte tekst 'J' en de rij met sleutels 'B' kruisen het alfabet van 'K' in de vigeneretabel, dus de eerste letter van de cijfertekst is 'K'.

Op dezelfde manier wordt de tweede letter van de leesbare tekst gecombineerd met de tweede letter van de sleutel. De kolom met platte tekst 'A' en de rij met sleutels 'E' kruisen het alfabet 'E' in de vigeneretabel, dus de tweede letter van de cijfertekst is 'E'.

Dit proces gaat continu door totdat de platte tekst is voltooid.

Cijfertekst = KENTUTGBOX

Decryptie

snaar gesplitste bash

Decodering gebeurt door de rij sleutels in de vigeneretabel. Selecteer eerst de rij met de sleutelletter, zoek de positie van de cijfertekstletter in die rij en selecteer vervolgens het kolomlabel van de overeenkomstige cijfertekst als leesbare tekst.

Vigenere-cijfer

In de rij van de sleutel staat bijvoorbeeld 'B' en de cijfertekst is 'K' en deze cijfertekstletter verschijnt in de kolom 'J', wat betekent dat de eerste leesbare letter 'J' is.

Vervolgens staat in de rij van de sleutel 'E' en de cijfertekst is 'E' en deze cijfertekstletter verschijnt in de kolom 'A', wat betekent dat de tweede leesbare letter 'A' is.

Dit proces gaat continu door totdat de cijfertekst is voltooid.

Platte tekst = JAVATPOINT

Methode 2

Wanneer de vigenere-tabel niet wordt gegeven, wordt de codering en decodering uitgevoerd door de algebraïsche formule van Vigenar in deze methode (zet de letters (A-Z) om in de cijfers (0-25)).

Formule van encryptie is,

ENi= (Pi+ Ki) tegen 26

Formule van decodering is,

Di= (Ei- Ki) tegen 26

In ieder geval (Di) waarde wordt negatief (-ve), in dit geval voegen we 26 toe aan de negatieve waarde.

Waar,

E geeft de codering aan.

woordenboek c#

D geeft de decodering aan.

P geeft de leesbare tekst aan.

K geeft de sleutel aan.

Opmerking: 'i' geeft de verschuiving van het i-de getal van de letters aan, zoals weergegeven in de onderstaande tabel.

Vigenere-cijfer

Voorbeeld: De leesbare tekst is 'JAVATPOINT' en de sleutel is 'BEST'.

Encryptie: ENi= (Pi+ Ki) tegen 26

Platte tekst J A IN A T P O I N T
Waarde voor platte tekst (P) 09 00 eenentwintig 00 19 vijftien 14 08 13 19
Sleutel B EN S T B EN S T B EN
Sleutelwaarde (K) 01 04 18 19 01 04 18 19 01 04
Cijfertekstwaarde (E) 10 04 13 19 twintig 19 06 01 14 23
Cijfertekst K EN N T IN T G B O X

Decryptie: Di= (Ei- Ki) tegen 26

Als de (Di)-waarde in een bepaald geval negatief (-ve) wordt, voegen we in dit geval 26 toe aan de negatieve waarde. Zoals de derde letter van de cijfertekst;

N=13 en S=18

Di= (Ei- Ki) tegen 26

Di= (13 - 18) tegen 26

Python schrijft json naar bestand

Di= -5 tegen 26

Di= (-5 + 26) tegen 26

Di= 21

Cijfertekst K EN N T IN T G B O X
Cijfertekstwaarde (E) 10 04 13 19 twintig 19 06 01 14 23
Sleutel B EN S T B EN S T B EN
Sleutelwaarde (K) 01 04 18 19 01 04 18 19 01 04
Waarde voor platte tekst (P) 09 00 eenentwintig 00 19 vijftien 14 08 13 19
Platte tekst J A IN A T P O I N T

Programma:

C-taal

 #include #include using namespace std; int main() { Vigenere cipher(&apos;VIGENERECIPHER&apos;); string original = &apos;I AM INDIAN&apos;; string encrypted = cipher.encrypt(original); string decrypted = cipher.decrypt(encrypted); cout &lt;&lt; original &lt;&lt; endl; cout &lt;&lt; &apos;Encrypted: &apos; &lt;&lt; encrypted &lt;&lt; endl; cout &lt;&lt; &apos;Decrypted: &apos; &lt;&lt; decrypted &lt;&lt; endl; } class Vigenere { public: string key; Vigenere(string key) { for (int i = 0; i = &apos;A&apos; &amp;&amp; key[i] key += key[i]; else if (key[i]&gt;= &apos;a&apos; &amp;&amp; key[i] key += key[i] + &apos;A&apos; - &apos;a&apos;; } } string encrypt(string text) { string out; for (int i = 0, j = 0; i = &apos;a&apos; &amp;&amp; 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></=>