logo

Cifratore Vigenere

introduzione

Il cifrario vigenere è un algoritmo utilizzato per crittografare e decrittografare il testo. Il cifrario vigenere è un algoritmo di cifratura di un testo alfabetico che utilizza una serie di cifrari di Cesare intrecciati. Si basa sulle lettere di una parola chiave. È un esempio di cifrario a sostituzione polialfabetica. Questo algoritmo è facile da comprendere e implementare. Questo algoritmo fu descritto per la prima volta nel 1553 da Giovan Battista Bellaso . Utilizza una tabella Vigenere o un quadrato Vigenere per la crittografia e la decrittografia del testo. La tavola vigenere è detta anche tabula recta.

Due metodi eseguono la cifratura di Vigenere.

Metodo 1

Quando viene fornita la tabella vigenere, la crittografia e la decrittografia vengono eseguite utilizzando la tabella vigenere (matrice 26 * 26) in questo metodo.

Cifratore Vigenere

Esempio: il testo in chiaro è 'JAVATPOINT' e la chiave è 'BEST'.

Per generare una nuova chiave, la chiave data viene ripetuta in modo circolare, purché la lunghezza del testo in chiaro non sia uguale alla nuova chiave.

Cifratore Vigenere

Crittografia

algoritmo di ricerca binaria

La prima lettera del testo in chiaro viene combinata con la prima lettera della chiave. La colonna di testo semplice 'J' e la riga della chiave 'B' intersecano l'alfabeto 'K' nella tabella vigenere, quindi la prima lettera del testo cifrato è 'K'.

Allo stesso modo, la seconda lettera del testo in chiaro viene combinata con la seconda lettera della chiave. La colonna di testo semplice 'A' e la riga della chiave 'E' intersecano l'alfabeto 'E' nella tabella vigenere, quindi la seconda lettera del testo cifrato è 'E'.

Questo processo continua continuamente fino al completamento del testo in chiaro.

Testo cifrato = KENTUTGBOX

Decrittazione

La decrittazione viene eseguita dalla riga di chiavi nella tabella vigenere. Innanzitutto, seleziona la riga della lettera chiave, trova la posizione della lettera del testo cifrato in quella riga, quindi seleziona l'etichetta della colonna del testo cifrato corrispondente come testo in chiaro.

Cifratore Vigenere

Ad esempio, nella riga della chiave c'è 'B' e il testo cifrato è 'K' e questa lettera del testo cifrato appare nella colonna 'J', ciò significa che la prima lettera del testo in chiaro è 'J'.

Successivamente, nella riga della chiave c'è 'E' e il testo cifrato è 'E' e questa lettera del testo cifrato appare nella colonna 'A', ciò significa che la seconda lettera del testo in chiaro è 'A'.

Questo processo continua continuamente fino al completamento del testo cifrato.

Testo in chiaro = PUNTO JAVAPT

Metodo 2

Quando la tabella vigenere non viene fornita, la crittografia e la decrittografia vengono eseguite dalla formula algebrica di Vigenar in questo metodo (convertire le lettere (A-Z) nei numeri (0-25)).

stati uniti quante città

La formula di crittografia è,

Eio= (Pio+Kio) contro 26

La formula di decrittazione è,

Dio= (Eio- Kio) contro 26

In ogni caso (Dio) diventa negativo (-ve), in questo caso aggiungeremo 26 nel valore negativo.

Dove,

E denota la crittografia.

jquery al clic

D denota la decrittazione.

P denota il testo in chiaro.

K denota la chiave.

Nota: 'i' indica l'offset dell'i-esimo numero delle lettere, come mostrato nella tabella seguente.

Cifratore Vigenere

Esempio: il testo in chiaro è 'JAVATPOINT' e la chiave è 'BEST'.

Crittografia: Eio= (Pio+Kio) contro 26

Testo in chiaro J UN IN UN T P O IO N T
Valore del testo in chiaro (P) 09 00 ventuno 00 19 quindici 14 08 13 19
Chiave B E S T B E S T B E
Valore chiave (K) 01 04 18 19 01 04 18 19 01 04
Valore del testo cifrato (E) 10 04 13 19 venti 19 06 01 14 23
Testo cifrato K E N T IN T G B O X

Decifrazione: Dio= (Eio- Kio) contro 26

Se in ogni caso il valore (Di) diventa negativo (-ve), in questo caso aggiungeremo 26 al valore negativo. Ad esempio, la terza lettera del testo cifrato;

N = 13 e S = 18

modificare il file linux

Dio= (Eio- Kio) contro 26

Dio= (13 - 18) contro 26

Dio= -5 contro 26

Dio= (-5 + 26) contro 26

Dio= 21

Testo cifrato K E N T IN T G B O X
Valore del testo cifrato (E) 10 04 13 19 venti 19 06 01 14 23
Chiave B E S T B E S T B E
Valore chiave (K) 01 04 18 19 01 04 18 19 01 04
Valore del testo in chiaro (P) 09 00 ventuno 00 19 quindici 14 08 13 19
Testo in chiaro J UN IN UN T P O IO N T

Programma:

Linguaggio C

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