Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Vigenere

.cpp
Скачиваний:
0
Добавлен:
18.02.2023
Размер:
1.9 Кб
Скачать
// Vigenere.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//

#include <iostream>
#include <string>

using namespace std;

int main()
{
    setlocale(LC_ALL, "Russian");
    string abc = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ_";
    string keys = "ОРЕХ";
    string text = "ШВМБУЖНЯ";

    // шифрование text
    //for (int i = 0; i < text.length(); i++)
    //{
    //    char key = keys[i % keys.length()]; // текущий символ ключа для итерации
    //    int k = 0;
    //    for (int j = 0; j < abc.length(); j++)
    //        if (key == abc[j])
    //        {
    //            k = j;
    //            break;
    //        }

    //    for (int j = 0; j < abc.length(); j++)
    //    {
    //        if (text[i] == abc[j])
    //        {
    //            char o = abc[(j + k) % abc.length()];
    //            text[i] = o;
    //            break;
    //        }
    //    }
    //
    //}
    cout << text << endl;

    // расшифровывание зашифрованного text
    for (int i = 0; i < text.length(); i++)
    {
        char key = keys[i % keys.length()]; // текущий символ ключа для итерации
        int k = 0;
        for (int j = 0; j < abc.length(); j++)
            if (key == abc[j])
            {
                k = j;
                break;
            }

        for (int j = 0; j < abc.length(); j++)
        {
            if (text[i] == abc[j])
            {
                char o = abc[(j + abc.length() - k) % abc.length()];
                text[i] = o;
                break;
            }
        }

    }
    cout << text << endl;
    return 0;
}
Соседние файлы в предмете Теория информации