Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Impulse703
0 / 0 / 2
Регистрация: 21.10.2016
Сообщений: 7
#1

Шифрование/дешифрование шифра Трисемуса с любым ключевым словом - C++

31.10.2016, 09:50. Просмотров 942. Ответов 2
Метки нет (Все метки)

Помогите,пожалуйста написать программу по шифровке и дешифровке шифра Трисемус с любым ключевым словом в С++.
http://www.cyberforum.ru/cpp-beginners/thread179410.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2016, 09:50
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Шифрование/дешифрование шифра Трисемуса с любым ключевым словом (C++):

Как зашифровать текст из файла шифрованием Цезаря с ключевым словом?
в общем дан текст в файле.Нужно зашифровать его, например, с помощью кода...

Шифрование шифра Виженера
Здравствуйте! При шифровании сообщения на русском языке шифром Виженера у меня...

Шифрование и дешифрование
Помогите написать программу, которая будет шифровать и дешифровать матррицу.

Шифрование и дешифрование на Cи
не получается зашифровать текст и получить буквы из кода. Попалась вот такая...

Шифрование. Дешифрование по N
Задание: Зашифровать строку таким методом. При N =4 страуструп стра...

2
Kira_the_first
7 / 7 / 1
Регистрация: 23.10.2016
Сообщений: 78
Завершенные тесты: 1
31.10.2016, 16:21 #2
свои наработки то хоть есть?
0
RobinHood
20 / 20 / 13
Регистрация: 08.12.2015
Сообщений: 70
Завершенные тесты: 6
31.10.2016, 17:56 #3
Лучший ответ Сообщение было отмечено Impulse703 как решение

Решение

Impulse703, на правах рубрики "Бредовый быдлокод" с goto, мешаниной из char и std::string и прочими прелестями :
Кликните здесь для просмотра всего текста
Условия: для получения шифра используется таблица для записи букв алфавита и ключевое слово. В таблицу сначала вписывается по строкам ключевое слово. Затем таблица дополняется не вошедшими в нее буквами алфавита по порядку.
При шифровании находят в этой таблице очередную букву открытого текста и записывают в зашифрованный текст букву, расположенную ниже ее, в том же столбце. Если буква текста оказывается в нижней строке таблицы, тогда для зашифрованного текста берут самую верхнюю букву из того же столбца.
Пример. Для английского алфавита шифрующая таблица имеет размер 5x5. Выберем в качестве ключа слово "CEILON". Шифрующая таблица примет вид:
C E I L O
N A B D F
G H J K M
P Q R S T
U V W X Y
При шифровании с помощью этой таблицы
сообщения "FIRSTSAMPLEXY"
получаем зашифрованный текст "MBWXYXHTUDALO"
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include <string.h>
#include <iostream>
 
#define N 5
#define M 5
char alphabet[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
 
void Delsymb(char symb, char c[])
{
    for(char* a=c, *b=alphabet; *a; ++a, ++b){
        while(*a==symb) ++a;
        *b=*a;
    }
    
}
 
void Createtable(char t[][N], std::string& keyword)
{
    // Составляем таблицу
    int cnt=0;
    std::string::iterator it = keyword.begin();
    for (int i=0; i<N; i++)
        for (int j=0; j<M; j++)
        {
            if (it != keyword.end())
            {
                t[i][j]=(*it);
                Delsymb(*it,alphabet);
                ++it;
            }
            else
            {
                t[i][j]=alphabet[cnt];
                cnt++;
            }
        }
}
 
void Encode (char t[][N], std::string& mes)
{
    // Шифруем
    std::string::iterator it = mes.begin();
    while (it != mes.end())
    {
        for (int i=0; i<N; i++)
            for (int j=0; j<M; j++)
            {
                    if (t[i][j]==(*it)) 
                    {
                        if (i!=(N-1)) (*it)=t[i+1][j]; else (*it)=t[0][j];
                        goto next;
                    }
            }
        next:       ++it;       
    }
}
 
void Decode (char t[][N], std::string& mes)
{
    // Дешифруем
    std::string::iterator it = mes.begin();
    while (it != mes.end())
    {
        for (int i=0; i<N; i++)
            for (int j=0; j<M; j++)
            {
                    if (t[i][j]==(*it)) 
                    {
                        if (i!=0) (*it)=t[i-1][j]; else (*it)=t[N-1][j];
                        goto next;
                    }
            }
        next:       ++it;       
    }
}
 
int main()
{
    char table[N][M];
    std::string keyword("CEILON");
    Createtable(table,keyword);
    std::string message("FIRSTSAMPLEXY");
    Encode(table, message);
    std::cout << "Coded text:  " << message.c_str() << std::endl;
    Decode(table, message);
    std::cout << "Decoded text:  " << message.c_str() << std::endl;
    return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.10.2016, 17:56
Привет! Вот еще темы с решениями:

Шифрование/Дешифрование
Не получается выполнить последний пункт на Дешифровании(после замены)...

Шифрование / дешифрование файлов
есть ли стандартные средства шифрования\дешифрования файлов? если нет, какие...

Шифрование и дешифрование текста
Народ вот програма для шифрования текста мне нужно переделать так штоб били...

Шифрование. Дешифрование по N. И по коду
Написать программу по шифрованию, дешифрованию. Можно их выделить в функции....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru