logo

Vigenere Cipher

Introduktion

Vigenere-chifferet är en algoritm som används för att kryptera och dekryptera texten. Vigenere-chifferet är en algoritm för att kryptera en alfabetisk text som använder en serie sammanvävda caesar-chiffer. Det är baserat på ett nyckelords bokstäver. Det är ett exempel på ett polyalfabetiskt substitutionschiffer. Denna algoritm är lätt att förstå och implementera. Denna algoritm beskrevs första gången 1553 av Giovan Battista Bellaso . Den använder en Vigenere-tabell eller Vigenere-ruta för kryptering och dekryptering av texten. Vigenere-tabellen kallas även tabula recta.

Två metoder utför vigenere-chifferet.

Metod 1

När vigenere-tabellen ges, görs krypteringen och dekrypteringen med hjälp av vigenere-tabellen (26 * 26 matris) i denna metod.

Vigenere Cipher

Exempel: Klartexten är 'JAVATPOINT' och nyckeln är 'BÄST'.

För att generera en ny nyckel upprepas den givna nyckeln på ett cirkulärt sätt, så länge som längden på klartexten inte är lika med den nya nyckeln.

Vigenere Cipher

Kryptering

java hej-program

Den första bokstaven i klartexten kombineras med den första bokstaven i nyckeln. Kolumnen med ren text 'J' och nyckelraden 'B' skär alfabetet av 'K' i vigenere-tabellen, så den första bokstaven i chiffertext är 'K'.

På samma sätt kombineras den andra bokstaven i klartexten med den andra bokstaven i nyckeln. Kolumnen med vanlig text 'A' och nyckelraden 'E' skär alfabetet 'E' i vigenere-tabellen, så den andra bokstaven i chiffertext är 'E'.

Denna process fortsätter kontinuerligt tills klartexten är klar.

Chiffertext = KENTUTGBOX

Dekryptering

Dekryptering görs av raden med nycklar i vigenere-tabellen. Välj först raden med nyckelbokstaven, hitta chiffertextbokstavens position på den raden och välj sedan kolumnetiketten för motsvarande chiffertext som klartext.

Vigenere Cipher

Till exempel, på raden av nyckeln är 'B' och chiffertexten är 'K' och denna chiffertextbokstav visas i kolumnen 'J', det betyder att den första klartextbokstaven är 'J'.

Därefter, i raden av nyckeln är 'E' och chiffertexten är 'E' och denna chiffertextbokstav visas i kolumnen 'A', det betyder att den andra klartextbokstaven är 'A'.

Denna process fortsätter kontinuerligt tills chiffertexten är klar.

ankita dave

Oformatterad text = JAVATPOINT

Metod 2

När vigenere-tabellen inte ges, görs krypteringen och dekrypteringen med Vigenars algebraiska formel i denna metod (konvertera bokstäverna (A-Z) till siffrorna (0-25)).

Formel för kryptering är,

OCHi= (Pi+ Ki) mot 26

Formel för dekryptering är,

Di= (Ei-Ki) mot 26

Om något fall (Di) värdet blir negativt (-ve), i det här fallet lägger vi till 26 i det negativa värdet.

Var,

E betecknar krypteringen.

java kommentarer

D betecknar dekrypteringen.

P betecknar klartext.

K betecknar nyckeln.

Notera: 'i' anger förskjutningen av bokstävernas i:te nummer, som visas i tabellen nedan.

Vigenere Cipher

Exempel: Klartexten är 'JAVATPOINT' och nyckeln är 'BÄST'.

Kryptering: OCHi= (Pi+ Ki) mot 26

Oformatterad text J A I A T P O jag N T
Klartextvärde (P) 09 00 tjugoett 00 19 femton 14 08 13 19
Nyckel B OCH S T B OCH S T B OCH
Nyckelvärde (K) 01 04 18 19 01 04 18 19 01 04
Chiffertextvärde (E) 10 04 13 19 tjugo 19 06 01 14 23
Chiffertext K OCH N T I T G B O X

Dekryptering: Di= (Ei-Ki) mot 26

basband vs bredband

Om något värde (Di) blir negativt (-ve), lägger vi i det här fallet till 26 i det negativa värdet. Som den tredje bokstaven i chiffertexten;

N = 13 och S = 18

Di= (Ei-Ki) mot 26

Di= (13 - 18) mot 26

Di= -5 mot 26

Di= (-5 + 26) mot 26

Di= 21

Chiffertext K OCH N T I T G B O X
Chiffertextvärde (E) 10 04 13 19 tjugo 19 06 01 14 23
Nyckel B OCH S T B OCH S T B OCH
Nyckelvärde (K) 01 04 18 19 01 04 18 19 01 04
Klartextvärde (P) 09 00 tjugoett 00 19 femton 14 08 13 19
Oformatterad text J A I A T P O jag N T

Program:

C språk

 #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></=>