logo

Vigenere Cipher

Introduksjon

Vigenere-chifferet er en algoritme som brukes til å kryptere og dekryptere teksten. Vigenere-chifferet er en algoritme for å kryptere en alfabetisk tekst som bruker en serie sammenvevde caesar-chiffer. Den er basert på et nøkkelords bokstaver. Det er et eksempel på en polyalfabetisk substitusjonssiffer. Denne algoritmen er enkel å forstå og implementere. Denne algoritmen ble først beskrevet i 1553 av Giovan Battista Bellaso . Den bruker en Vigenere-tabell eller Vigenere-firkant for kryptering og dekryptering av teksten. Vigenere-tabellen kalles også tabula recta.

To metoder utfører vigenere-chifferet.

Metode 1

Når vigenere-tabellen er gitt, gjøres krypteringen og dekrypteringen ved å bruke vigenere-tabellen (26 * 26 matrise) i denne metoden.

Vigenere Cipher

Eksempel: Klarteksten er 'JAVATPOINT', og nøkkelen er 'BEST'.

For å generere en ny nøkkel, gjentas den gitte nøkkelen på en sirkulær måte, så lenge lengden på ren tekst ikke er lik den nye nøkkelen.

Vigenere Cipher

Kryptering

bord i lateks

Den første bokstaven i klarteksten er kombinert med den første bokstaven i nøkkelen. Kolonnen med ren tekst 'J' og rad med nøkkel 'B' skjærer alfabetet til 'K' i vigenere-tabellen, så den første bokstaven i chiffertekst er 'K'.

På samme måte er den andre bokstaven i klarteksten kombinert med den andre bokstaven i nøkkelen. Kolonnen med ren tekst 'A' og rad med nøkkel 'E' krysser alfabetet til 'E' i vigenere-tabellen, så den andre bokstaven i chiffertekst er 'E'.

Denne prosessen fortsetter kontinuerlig til klarteksten er ferdig.

Chiffertekst = KENTUTGBOX

Dekryptering

sorteringsalgoritmer slå sammen sortering

Dekryptering gjøres av nøklerraden i vigenere-tabellen. Velg først raden med nøkkelbokstaven, finn chiffertekstbokstavens plassering i den raden, og velg deretter kolonneetiketten til den tilsvarende chifferteksten som ren tekst.

Vigenere Cipher

For eksempel, i raden av nøkkelen er 'B' og chifferteksten er 'K' og denne chiffertekstbokstaven vises i kolonnen 'J', det betyr at den første klartekstbokstaven er 'J'.

Deretter, i raden av nøkkelen er 'E' og chifferteksten er 'E' og denne chiffertekstbokstaven vises i kolonnen 'A', det betyr at den andre klartekstbokstaven er 'A'.

Denne prosessen fortsetter kontinuerlig til chifferteksten er ferdig.

Klartekst = JAVATPOINT

Metode 2

Når vigenere-tabellen ikke er gitt, gjøres krypteringen og dekrypteringen av Vigenar algebraisk formel i denne metoden (konverter bokstavene (A-Z) til tallene (0-25)).

Formel for kryptering er,

OGJeg= (PJeg+ KJeg) mot 26

Formel for dekryptering er,

DJeg= (EJeg- KJeg) mot 26

Hvis noe tilfelle (DJeg) verdi blir negativ (-ve), i dette tilfellet vil vi legge til 26 i den negative verdien.

Hvor,

E angir krypteringen.

kajal aggarwal

D angir dekrypteringen.

P betegner klarteksten.

K angir nøkkelen.

Merk: 'i' angir forskyvningen av det i-tallet av bokstavene, som vist i tabellen nedenfor.

Vigenere Cipher

Eksempel: Klarteksten er 'JAVATPOINT', og nøkkelen er 'BEST'.

Kryptering: OGJeg= (PJeg+ KJeg) mot 26

Klartekst J EN I EN T P O Jeg N T
Klartekstverdi (P) 09 00 tjueen 00 19 femten 14 08 1. 3 19
Nøkkel B OG S T B OG S T B OG
Nøkkelverdi (K) 01 04 18 19 01 04 18 19 01 04
Chiffertekstverdi (E) 10 04 1. 3 19 tjue 19 06 01 14 23
Chiffertekst K OG N T I T G B O X

Dekryptering: DJeg= (EJeg- KJeg) mot 26

Hvis noen kasusverdi (Di) blir negativ (-ve), vil vi i dette tilfellet legge til 26 i den negative verdien. Som, den tredje bokstaven i chifferteksten;

N = 13 og S = 18

DJeg= (EJeg- KJeg) mot 26

DJeg= (13 - 18) mot 26

hvis annet bash

DJeg= -5 mot 26

DJeg= (-5 + 26) mot 26

DJeg= 21

Chiffertekst K OG N T I T G B O X
Chiffertekstverdi (E) 10 04 1. 3 19 tjue 19 06 01 14 23
Nøkkel B OG S T B OG S T B OG
Nøkkelverdi (K) 01 04 18 19 01 04 18 19 01 04
Klartekstverdi (P) 09 00 tjueen 00 19 femten 14 08 1. 3 19
Klartekst J EN I EN T P O Jeg 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></=>