logo

Chiffre de Vigenère

Introduction

Le chiffre Vigenere est un algorithme utilisé pour crypter et déchiffrer le texte. Le chiffre Vigenere est un algorithme de chiffrement d'un texte alphabétique qui utilise une série de chiffres César entrelacés. Il est basé sur les lettres d'un mot-clé. C'est un exemple de chiffre de substitution polyalphabétique. Cet algorithme est facile à comprendre et à mettre en œuvre. Cet algorithme a été décrit pour la première fois en 1553 par Giovan Battista Bellaso . Il utilise une table de Vigenere ou un carré de Vigenere pour le cryptage et le déchiffrement du texte. La table vigenère est aussi appelée tabula recta.

Deux méthodes réalisent le chiffre vigenere.

Méthode 1

Lorsque la table vigenere est donnée, le cryptage et le déchiffrement se font à l'aide de la table vigenere (matrice 26*26) dans cette méthode.

Chiffre de Vigenère

Exemple : le texte en clair est 'JAVATPOINT' et la clé est 'BEST'.

Pour générer une nouvelle clé, la clé donnée est répétée de manière circulaire, tant que la longueur du texte brut n'est pas égale à la nouvelle clé.

Chiffre de Vigenère

Chiffrement

tutoriel c#

La première lettre du texte clair est combinée avec la première lettre de la clé. La colonne de texte brut « J » et la rangée de clé « B » croisent l'alphabet « K » dans la table vigenere, donc la première lettre du texte chiffré est « K ».

De même, la deuxième lettre du texte clair est combinée avec la deuxième lettre de la clé. La colonne de texte brut « A » et la rangée de clé « E » croisent l'alphabet « E » dans la table vigenere, donc la deuxième lettre du texte chiffré est « E ».

Ce processus se poursuit continuellement jusqu'à ce que le texte en clair soit terminé.

Texte chiffré = KENTUTGBOX

Décryptage

np.concaténer

Le déchiffrement se fait par la rangée de clés de la table vigenere. Tout d’abord, sélectionnez la ligne de la lettre clé, recherchez la position de la lettre du texte chiffré dans cette ligne, puis sélectionnez l’étiquette de colonne du texte chiffré correspondant comme texte brut.

Chiffre de Vigenère

Par exemple, dans la ligne de la clé se trouve « B » et le texte chiffré est « K » et cette lettre du texte chiffré apparaît dans la colonne « J », ce qui signifie que la première lettre du texte en clair est « J ».

Ensuite, dans la rangée de la clé se trouve « E » et le texte chiffré est « E » et cette lettre de texte chiffré apparaît dans la colonne « A », ce qui signifie que la deuxième lettre en clair est « A ».

Ce processus se poursuit continuellement jusqu'à ce que le texte chiffré soit terminé.

Texte brut = POINT JAVAT

Méthode 2

Lorsque la table vigenere n'est pas donnée, le cryptage et le déchiffrement sont effectués par la formule algébrique de Vigenar dans cette méthode (convertir les lettres (A-Z) en chiffres (0-25)).

La formule de cryptage est la suivante :

ETje= (Pje+Kje) contre 26

La formule de décryptage est,

Dje= (Eje-Kje) contre 26

Le cas échéant (Dje) la valeur devient négative (-ve), dans ce cas, nous ajouterons 26 à la valeur négative.

Où,

E désigne le cryptage.

Architecture Java

D désigne le décryptage.

P désigne le texte en clair.

K désigne la clé.

Remarque : « i » désigne le décalage du ième nombre des lettres, comme indiqué dans le tableau ci-dessous.

Chiffre de Vigenère

Exemple : le texte en clair est 'JAVATPOINT' et la clé est 'BEST'.

Chiffrement: ETje= (Pje+Kje) contre 26

Texte brut J. UN DANS UN T P. Ô je N T
Valeur en texte brut (P) 09 00 vingt-et-un 00 19 quinze 14 08 13 19
Clé B ET S T B ET S T B ET
Valeur clé (K) 01 04 18 19 01 04 18 19 01 04
Valeur du texte chiffré (E) dix 04 13 19 vingt 19 06 01 14 23
Texte chiffré K ET N T DANS T g B Ô X

Décryptage : Dje= (Eje-Kje) contre 26

Si dans un cas (Di) la valeur devient négative (-ve), dans ce cas, nous ajouterons 26 à la valeur négative. Comme la troisième lettre du texte chiffré ;

N = 13 et S = 18

Dje= (Eje-Kje) contre 26

Dje= (13 - 18) contre 26

exploration de données

Dje= -5 contre 26

Dje= (-5 + 26) contre 26

Dje= 21

Texte chiffré K ET N T DANS T g B Ô X
Valeur du texte chiffré (E) dix 04 13 19 vingt 19 06 01 14 23
Clé B ET S T B ET S T B ET
Valeur clé (K) 01 04 18 19 01 04 18 19 01 04
Valeur en texte brut (P) 09 00 vingt-et-un 00 19 quinze 14 08 13 19
Texte brut J. UN DANS UN T P. Ô je N T

Programme:

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