Bevezetés
A vigenere titkosítás egy algoritmus, amelyet a szöveg titkosítására és visszafejtésére használnak. A vigenere titkosítás egy alfabetikus szöveg titkosítására szolgáló algoritmus, amely egy sor összefonódott cézár-rejtjelet használ. Egy kulcsszó betűin alapul. Ez egy példa a többalfabetikus helyettesítési titkosításra. Ez az algoritmus könnyen érthető és végrehajtható. Ezt az algoritmust először 1553-ban írta le Giovan Battista Bellaso . Vigenere táblát vagy Vigenere négyzetet használ a szöveg titkosításához és visszafejtéséhez. A vigenere táblázatot tabula rectának is nevezik.
A vigenere titkosítást két módszer hajtja végre.
1. módszer
A vigenere táblázat megadásakor a titkosítás és a visszafejtés a vigenere táblázat (26 * 26 mátrix) használatával történik ebben a módszerben.
Példa: Az egyszerű szöveg a 'JAVATPOINT', a kulcs pedig a 'BEST'.
Új kulcs generálásához az adott kulcsot körkörösen megismételjük mindaddig, amíg a sima szöveg hossza nem egyezik meg az új kulccsal.
Titkosítás
fatérkép
Az egyszerű szöveg első betűje kombinálva van a kulcs első betűjével. A „J” egyszerű szöveg oszlopa és a „B” kulcs sora metszi a „K” ábécéjét a vigenere táblázatban, így a titkosított szöveg első betűje „K”.
Hasonlóképpen, az egyszerű szöveg második betűje kombinálva van a kulcs második betűjével. Az egyszerű szöveg „A” oszlopa és az „E” kulcssor metszi az „E” ábécéjét a vigenere táblázatban, így a titkosított szöveg második betűje „E”.
Ez a folyamat folyamatosan folytatódik, amíg a nyílt szöveg be nem fejeződik.
Rejtjelezett szöveg = KENTUTGBOX
Dekódolás
java tömb lista
A visszafejtést a vigenere tábla kulcssora végzi. Először jelölje ki a kulcsbetű sorát, keresse meg a rejtjelezett szöveg betűjének helyét abban a sorban, majd válassza ki a megfelelő rejtjelezett szöveg oszlopcímkéjét egyszerű szövegként.
Például a kulcs sorában „B”, a rejtjelezett szöveg pedig „K”, és ez a rejtjelezett betű a „J” oszlopban jelenik meg, ami azt jelenti, hogy az első egyszerű szöveg betűje „J”.
Ezután a kulcs sorában az „E”, a rejtjelezett szöveg pedig „E”, és ez a rejtjelezett betű az „A” oszlopban jelenik meg, ami azt jelenti, hogy a második egyszerű szöveg betűje „A”.
Ez a folyamat folyamatosan folytatódik, amíg a titkosított szöveg be nem fejeződik.
Egyszerű szöveg = JAVATPONT
2. módszer
Ha a vigenere táblázat nincs megadva, a titkosítást és a visszafejtést Vigenar algebrai képletével végzik ebben a módszerben (a betűket (A-Z) számokká alakítják (0-25)).
A titkosítás képlete:
ÉSén= (Pén+ Kén) 26. ellenébenA visszafejtés képlete:
Dén= (Eén- Kén) 26. ellenébenHa bármilyen eset (Dén) értéke negatív lesz (-ve), ebben az esetben a negatív értékhez 26-ot adunk.
Ahol,
E a titkosítást jelöli.
új sor a pythonban
D a visszafejtést jelöli.
P a nyílt szöveget jelöli.
K a kulcsot jelöli.
Megjegyzés: Az 'i' a betűk i-edik számának eltolását jelöli, amint az az alábbi táblázatban látható.
Példa: Az egyszerű szöveg a 'JAVATPOINT', a kulcs pedig a 'BEST'.
Titkosítás: ÉSén= (Pén+ Kén) 26. ellenében
Egyszerű szöveg | J | A | BAN BEN | A | T | P | O | én | N | T |
Egyszerű szöveges érték (P) | 09 | 00 | huszonegy | 00 | 19 | tizenöt | 14 | 08 | 13 | 19 |
Kulcs | B | ÉS | S | T | B | ÉS | S | T | B | ÉS |
Kulcsérték (K) | 01 | 04 | 18 | 19 | 01 | 04 | 18 | 19 | 01 | 04 |
Rejtjelezett szöveg érték (E) | 10 | 04 | 13 | 19 | húsz | 19 | 06 | 01 | 14 | 23 |
Rejtjelezett szöveg | K | ÉS | N | T | BAN BEN | T | G | B | O | x |
Dekódolás: Dén= (Eén- Kén) 26. ellenében
Ha bármelyik eset (Di) értéke negatív lesz (-ve), ebben az esetben 26-ot adunk a negatív értékhez. Mint a titkosított szöveg harmadik betűje;
N = 13 és S = 18
Dén= (Eén- Kén) 26. ellenében
Dén= (13 - 18) a 26 ellen
java string isempty
Dén= -5 a 26 ellen
Dén= (-5 + 26) a 26 ellen
Dén= 21
Rejtjelezett szöveg | K | ÉS | N | T | BAN BEN | T | G | B | O | x |
Rejtjelezett szöveg érték (E) | 10 | 04 | 13 | 19 | húsz | 19 | 06 | 01 | 14 | 23 |
Kulcs | B | ÉS | S | T | B | ÉS | S | T | B | ÉS |
Kulcsérték (K) | 01 | 04 | 18 | 19 | 01 | 04 | 18 | 19 | 01 | 04 |
Egyszerű szöveges érték (P) | 09 | 00 | huszonegy | 00 | 19 | tizenöt | 14 | 08 | 13 | 19 |
Egyszerű szöveg | J | A | BAN BEN | A | T | P | O | én | N | T |
Program:
C nyelv
#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></=>
=>