Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Полька 321
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 19
#1

Вывод зашифрованного текста методом подстановки - C++

19.04.2014, 16:41. Просмотров 1006. Ответов 13
Метки нет (Все метки)

делаю курсовую.тема шифровка/дешифровка текста методом подстановка+перестановка. суть в том, что пользователь вводит текст для шифрования латинскими буквами и без пробелов. написала программу,не могу только написать функцию дешифровки для метода перестановки. пробовала но расшифровывает неправильно. алгоритм программы у меня следующий:
1. ввод текста
2. вывод зашифрованного текста методом подстановки
3. ввод длины,и собственно самого ключа для шифровки методом перестановки
4. вывод зашифрованного текста методом перестановки
5. вывод расшифрованного текста методом подстановки
6. вывод расшифрованного текста методом перестановки (что и не получается)
ВНИМАНИЕ!!! Код прилагается
Люди добрые не глупые,помогите пожалуйста девушке на 9ом месяце беременности) курсач надо через 2 недели сдать, а то рожать скоро,ходить будет на пары не вариант) ещё документации кучу делать
вопщем надеюсь на адекватность и ум форумчан
заранее огромное спасибо от меня и будущего поколения
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 <stdio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <math.h>
using namespace std;
//ïåðåìåГ*Г*ûå ïîäñòГ*Г*îâêè
    char buff[50] = {0};
//ïåðåìåГ*Г*ûå ïåðåñòГ*Г*îâêè
 const int MAXLEN=200;
const int KEYLENGHT1=18;
    int size,lenght,n,c;
    int *keyReplace; 
 
     char buff1[50] = {0};
//øèôðîâГ*Г*ГЁГҐ ìåòîäîì ïîäñòГ*Г*îâêè, ãäå ГЄГ*æäГ*Гї ГЎГіГЄГўГ* èñõîäГ*îãî ГІГҐГЄГ±ГІГ* Г§Г*ìåГ*ГїГҐГІГ±Гї
// òðåòüåé ïîñëå Г*ГҐГҐ áóêâîé Гў Г*ëôГ*ГўГЁГІГҐ
void shifr_pod()
{
     cout<<"Ââåäèòå ñîîáùåГ*ГЁГҐ,êîòîðîå áóäåò Г§Г*êîäèðîâГ*Г*Г*Г®.Г‹Г*ГІГЁГ*ñêèìè ГЎГіГЄГўГ*ìè,ГЎГҐГ§ ïðîáåëîâ!!!"<<endl;
    cin>>buff;
    lenght = strlen(buff);  
    cout<<endl;
    for(int i = 0;i < strlen(buff); i++)
        buff[i] += 3;
    cout<<"ÑîîáùåГ*ГЁГҐ Г§Г*øèôðîâГ*Г*Г*îå ìåòîäîì ïîäñòГ*Г*îâêè: ";
    cout<<buff<<endl;
}
//øèôðîâГ*Г*ГЁГҐ ìåòîäîì ïåðåñòГ*Г*îâêè
/*ГґГіГ*êöèÿ äëÿ ââîäГ* êëþ÷Г**/
void vvod_key()
{
    cout<<"Ââåäèòå äëèГ*Гі êëþ÷Г*: ";
    cin>>size;
    cout<<endl;
    keyReplace = new int[size];
    cout<<"Ââåäèòå êëþ÷: ";
    for(int i=0;i<size;i++)
        cin>>*(keyReplace+i);   
}
/*øèôðîâГ*Г*ГЁГҐ*/
void shifr_per()
{
    //char *msgTo, *msgOut;
    for(int i=lenght;i<lenght+size;i++)
    {
        *(buff+i)= ' ';
    }
//îïðåäåëåГ*ГЁГҐ áëîêîâ
    n = lenght/size;
    if(lenght%size>0) n++;
    *(buff1+lenght+size-1)='\0';
    //cout<<"num blocks "<<n<<endl;
    
    for(int i=0;i<n;i++)
        for(int j=0;j<size;j++)
        {   
            c = *(keyReplace+j)-1;
            *(buff1+i*size+j) = *(buff+i*size+c);
        }
    puts(buff1);    
}
/*äåøèôðîâГ*Г*ГЁГҐ ìåòîäîì ïîäñòГ*Г*îâêè*/
void deshifr_pod()
{
     cout<<"ÄåøèôðîâГ*Г*ГЁГҐ ìåòîäîì ïîäñòГ*Г*îâêè: ";
    for(int i = 0;i < strlen(buff1); i++)
        buff1[i] -= 3;
    cout<<buff1<<endl;
}
/*äåøèôðîâГ*Г*ГЁГҐ ìåòîäîì ïåðåñòГ*Г*îâêè*/
 
//ГЈГ«Г*ГўГ*Г*Гї ГґГіГ*êöèÿ
int main()
{
    setlocale(0,"RUS");
    shifr_pod();
    cout<<endl;
    vvod_key();
    cout<<endl;
    cout<<"ÑîîáùåГ*ГЁГҐ Г§Г*øèôðîâГ*Г*Г*îå ìåòîäîì ïåðåñòГ*Г*îâêè: ";
    shifr_per();
    cout<<endl;
    deshifr_pod();
    cout<<endl;
    
    
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2014, 16:41     Вывод зашифрованного текста методом подстановки
Посмотрите здесь:

Шифрование текста методом замены букв C++
Шифрование текста методом замены букв C++
C++ Написать программу шифрования и дешифрования методом подстановки
C++ как сделать вывод текста, результата и продолжение текста
C++ Шифрование данных методом подстановки
Шифрование данных методом подстановки C++
Нужна программа зашифровки текста(файла) методом прямой замены (на с++) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Полька 321
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 19
19.04.2014, 18:14  [ТС]     Вывод зашифрованного текста методом подстановки #2
Вывод зашифрованного текста методом подстановки
Vergil
42 / 36 / 14
Регистрация: 11.11.2009
Сообщений: 240
19.04.2014, 19:44     Вывод зашифрованного текста методом подстановки #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Я в шифровании не разбираюсь, но судя по всему у вас не идет обратного преобразования по ключу

попробуйте заменить так
C++
1
2
3
4
5
6
7
8
9
10
/*дешифрование методом перестановки*/
 void deshifr_per()
       {   cout<<"Дешифрование методом перестановки: ";
        char *buff2 = new char[size];
        for (int i = 0; i < strlen(buff1); i++) {
        buff2[keyReplace[i]-1]=buff1[i];
        }
        for (int i = 0; i < strlen(buff1); i++) {
         cout<<buff2[i];
        }}
Конечно, код ужасный, но вроде работает.
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
19.04.2014, 19:45     Вывод зашифрованного текста методом подстановки #4
Так вроде всё логично:
Вы слово "tomsk" шифруете методом подстановки и получаете wrpvn; в данном случае соответствия:
w-t; r-o; p-m; v-s; k-n
Далее вы шифруете его ещё раз и меняете буквы местами. Получаете wnpvr
Согласно соответствиям выше - это tkmso, что вы и получаете.
Таким образом, перед тем, как расшифровывать подстановку (можно и после) - нужно расшифровать перестановку. Поставить буквы в правильный порядок.
Vergil
42 / 36 / 14
Регистрация: 11.11.2009
Сообщений: 240
19.04.2014, 19:50     Вывод зашифрованного текста методом подстановки #5
Кстати, что должно происходить если длина ключа меньше, чем количество символов?
Полька 321
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 19
19.04.2014, 19:52  [ТС]     Вывод зашифрованного текста методом подстановки #6
спасибо огромное работает алелуя

Добавлено через 2 минуты
ну если например при том же слове "tomsk" будет ключ 2431 то по перестановке он должен зашифровать так
"osmt k" (между osmt и k 3 пробела)
кстати да,косяк! на счет соразмерности не подумала
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.04.2014, 20:00     Вывод зашифрованного текста методом подстановки #7
Цитата Сообщение от Полька 321 Посмотреть сообщение
аписала программу,не могу только написать функцию дешифровки для метода перестановки. пробовала но расшифровывает неправильно. алгоритм программы у меня следующий:
Если расшифровку не осилила, то как справилась с зашифровкой? Пока не расшифровала, нельзя утверждать, что написала именно шифратор, а не анаграматор.

Добавлено через 1 минуту
Цитата Сообщение от Полька 321 Посмотреть сообщение
алгоритм программы у меня следующий:
1. ввод текста
2. вывод зашифрованного текста методом подстановки
3. ввод длины,и собственно самого ключа для шифровки методом перестановки
4. вывод зашифрованного текста методом перестановки
5. вывод расшифрованного текста методом подстановки
6. вывод расшифрованного текста методом перестановки (что и не получается)
ВНИМАНИЕ!!! Код прилагается
С алгоритмом это не имеет ничего общего.
Vergil
42 / 36 / 14
Регистрация: 11.11.2009
Сообщений: 240
19.04.2014, 20:01     Вывод зашифрованного текста методом подстановки #8
Если разберусь, как у вас идет шифрование, то поправлю косяк.
Полька 321
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 19
19.04.2014, 20:02  [ТС]     Вывод зашифрованного текста методом подстановки #9
taras atavin,будем мое сообщение поправлять или все же помогать?
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
19.04.2014, 20:04     Вывод зашифрованного текста методом подстановки #10
И где ж у меня хоть буква философии?
MastAKK
145 / 136 / 12
Регистрация: 13.10.2012
Сообщений: 586
Записей в блоге: 1
19.04.2014, 20:07     Вывод зашифрованного текста методом подстановки #11
Цитата Сообщение от Полька 321 Посмотреть сообщение
все же помогать
Таки уже-же помогли, нет?
Полька 321
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 19
19.04.2014, 20:08  [ТС]     Вывод зашифрованного текста методом подстановки #12
можно,нельзя,и что вообще у тебя тут за фигня и бла бла бла. не надо так

Добавлено через 44 секунды
MastAKK,помогли теперь осталось косячек один исправить и усе)
Vergil
42 / 36 / 14
Регистрация: 11.11.2009
Сообщений: 240
19.04.2014, 21:34     Вывод зашифрованного текста методом подстановки #13
Но знаю, то ли мы делаем, но вот
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/*дешифрование методом перестановки*/
 void deshifr_per()
       {   cout<<"Дешифрование методом перестановки: ";
        char *buff2 = new char[strlen(buff1)];
        for (int i = 0; i < (strlen(buff1)/size); i++) 
        {
        for (int j = 0; j <size ; j++) {
          buff2[size*i+keyReplace[j]]=buff1[size*i+j];
                  }
 
        }
    
        for (int i = 1; i <=strlen(buff1); i++) {
            cout<<buff2[i]; //выводятся ваши знаки
        }}
Проверял при длине ключа 2, 3, 4, 5.
Но вам стоит все же проверить. Т.к. при шифровании добавляются знаки, то они и в ответе выводятся. Либо замените
cout<<buff2[i]; //выводятся ваши знаки
на
if (buff2[i]!=(' '-3)) cout<<buff2[i]; // кривое решение, но не выводятся
Я в шифровании мало, что понимаю, я просто пишу на С++. Может быть, taras atavin прав и весь код не является шифрованием как таковым. Не знаю. Тут уже на ваши знания полагаемся.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2014, 05:59     Вывод зашифрованного текста методом подстановки
Еще ссылки по теме:

C++ Шифрование методом перестановки с заданным ключом текста любой длины
Считывание текста с файла методом getchar C++
Найти способ расшифровки зашифрованного текста C++
Написать программу расшифровки сообщения, зашифрованного при помощи двоичного кода C++
Реализовать шифровку и дешифровку заданного текста методом Цезаря C++

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

Или воспользуйтесь поиском по форуму:
Полька 321
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 19
20.04.2014, 05:59  [ТС]     Вывод зашифрованного текста методом подстановки #14
спасибо большое! все работает как надо!у меня преподаватель проверял на той неделе,сказала все правильно,на тот момент у меня было сделано каждое шифрование только,дешифровки не было.
Yandex
Объявления
20.04.2014, 05:59     Вывод зашифрованного текста методом подстановки
Ответ Создать тему
Опции темы

Текущее время: 04:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru