Въведение
Шифърът на Vigenere е алгоритъм, който се използва за криптиране и дешифриране на текста. Шифърът на Vigenere е алгоритъм за криптиране на азбучен текст, който използва поредица от преплетени шифри на Цезар. Базира се на букви на ключова дума. Това е пример за полиазбучен заместващ шифър. Този алгоритъм е лесен за разбиране и прилагане. Този алгоритъм е описан за първи път през 1553 г Джован Батиста Беласо . Той използва таблица на Vigenere или квадрат на Vigenere за криптиране и декриптиране на текста. Масата на Vigenere се нарича още tabula recta.
Два метода изпълняват шифъра на Vigenere.
Метод 1
Когато е дадена таблицата на Vigenere, криптирането и дешифрирането се извършват с помощта на таблицата на Vigenere (26 * 26 матрица) в този метод.
Пример: Чистият текст е 'JAVATPOINT', а ключът е 'BEST'.
За да се генерира нов ключ, даденият ключ се повтаря в кръг, докато дължината на обикновения текст не е равна на новия ключ.
Шифроване
foreach машинопис
Първата буква на открития текст се комбинира с първата буква на ключа. Колоната с обикновен текст 'J' и редът с ключ 'B' пресичат азбуката на 'K' в таблицата на vigenere, така че първата буква на шифрования текст е 'K'.
По същия начин втората буква от отворения текст се комбинира с втората буква от ключа. Колоната с обикновен текст 'A' и редът с ключ 'E' пресичат азбуката на 'E' в таблицата на vigenere, така че втората буква от шифрования текст е 'E'.
Този процес продължава непрекъснато, докато обикновеният текст приключи.
Шифран текст = KENTUTGBOX
Декриптиране
Дешифрирането се извършва от реда от ключове в таблицата на vigenere. Първо изберете реда на ключовата буква, намерете позицията на буквата на шифрования текст в този ред и след това изберете етикета на колоната на съответния шифрован текст като обикновен текст.
Например, в реда на ключа е 'B', а шифрованият текст е 'K' и тази буква от шифрован текст се появява в колоната 'J', което означава, че първата буква в обикновен текст е 'J'.
След това в реда на ключа е 'E' и шифрованият текст е 'E' и тази буква от шифрован текст се появява в колоната 'A', което означава, че втората буква в обикновен текст е 'A'.
Този процес продължава непрекъснато, докато шифрованият текст приключи.
Обикновен текст = JAVATPOINT
Метод 2
Когато таблицата на Vigenere не е дадена, криптирането и дешифрирането се извършват чрез алгебрична формула на Vigenar в този метод (преобразувайте буквите (A-Z) в числа (0-25)).
java е нула
Формулата на криптирането е,
Иаз= (Паз+ Каз) срещу 26Формулата за дешифриране е,
даз= (Еаз- Каз) срещу 26Ако има такъв случай (Dаз) стойността става отрицателна (-ve), в този случай ще добавим 26 към отрицателната стойност.
Където,
E обозначава криптирането.
char + int в java
D обозначава дешифрирането.
P обозначава открития текст.
K обозначава ключа.
Забележка: 'i' обозначава отместването на i-тия номер на буквите, както е показано в таблицата по-долу.
Пример: Чистият текст е 'JAVATPOINT', а ключът е 'BEST'.
Шифроване: Иаз= (Паз+ Каз) срещу 26
Обикновен текст | Дж | А | IN | А | T | П | О | аз | н | T |
Стойност в обикновен текст (P) | 09 | 00 | двадесет и едно | 00 | 19 | петнадесет | 14 | 08 | 13 | 19 |
Ключ | Б | И | С | T | Б | И | С | T | Б | И |
Ключова стойност (K) | 01 | 04 | 18 | 19 | 01 | 04 | 18 | 19 | 01 | 04 |
Стойност на шифрован текст (E) | 10 | 04 | 13 | 19 | двадесет | 19 | 06 | 01 | 14 | 23 |
Шифран текст | К | И | н | T | IN | T | Ж | Б | О | х |
Дешифриране: даз= (Еаз- Каз) срещу 26
Ако някоя стойност (Di) стане отрицателна (-ve), в този случай ще добавим 26 към отрицателната стойност. Например третата буква от шифрования текст;
N = 13 и S = 18
изтегляне на youtube с vlc
даз= (Еаз- Каз) срещу 26
даз= (13 - 18) срещу 26
даз= -5 срещу 26
даз= (-5 + 26) срещу 26
даз= 21
Шифран текст | К | И | н | T | IN | T | Ж | Б | О | х |
Стойност на шифрован текст (E) | 10 | 04 | 13 | 19 | двадесет | 19 | 06 | 01 | 14 | 23 |
Ключ | Б | И | С | T | Б | И | С | T | Б | И |
Ключова стойност (K) | 01 | 04 | 18 | 19 | 01 | 04 | 18 | 19 | 01 | 04 |
Стойност в обикновен текст (P) | 09 | 00 | двадесет и едно | 00 | 19 | петнадесет | 14 | 08 | 13 | 19 |
Обикновен текст | Дж | А | IN | А | T | П | О | аз | н | T |
програма:
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></=>
=>