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.
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é.
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.
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 26La formule de décryptage est,
Dje= (Eje-Kje) contre 26Le 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.
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('VIGENERECIPHER'); string original = 'I AM INDIAN'; string encrypted = cipher.encrypt(original); string decrypted = cipher.decrypt(encrypted); cout << original << endl; cout << 'Encrypted: ' << encrypted << endl; cout << 'Decrypted: ' << decrypted << endl; } class Vigenere { public: string key; Vigenere(string key) { for (int i = 0; i = 'A' && key[i] key += key[i]; else if (key[i]>= 'a' && key[i] key += key[i] + 'A' - 'a'; } } string encrypt(string text) { string out; for (int i = 0, j = 0; i = 'a' && 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></=>
=>