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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 204, средняя оценка - 4.63
t01001
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 12
#1

Шифрование методом перестановки - C++

16.12.2011, 02:31. Просмотров 27252. Ответов 36
Метки нет (Все метки)

Здравствуйте уважаемые!

Прошу помощи в написании программы. Пробывал писать сам, но чего то не туда пошел.

Буду очень признателен если поделитесь своим опытом.

вот задание:

"программно реализовать метод шифрования «перестановка». Программа должна получать открытый текст и ключ согласно варианту, шифровать открытый текст и дешифровать шифротекст. Шифрованный и дешифрованный текст должны отображаться на экране. "

Длинна блока (ключа): 5

Генерация ключа: Вручную

Ввод открытого текста: из файла
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2011, 02:31     Шифрование методом перестановки
Посмотрите здесь:

Нужна помощь (Шифрование с симметричными ключами методами перестановки) C++
Шифрование методом перестановки символов в заданном порядке C++
C++ Шифрование файлов методом перестановки с двумя ключевыми словами
Шифрование методом перестановки C++
C++ Шифр пароля методом перестановки
Шифрование методом перестановки на C++ C++
Шифрование/дешифрование файлов методом перестановки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
1511 / 617 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
01.03.2014, 21:19     Шифрование методом перестановки #21
Цитата Сообщение от Slava_dk Посмотреть сообщение
Expression: string subscript out of range
мало?
Slava_dk
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 14
01.03.2014, 21:44     Шифрование методом перестановки #22
хорошо, сейчас попробую

Добавлено через 1 минуту
-=ЮрА=-, удалил то, что Вы сказали, ничего не изменилось

Добавлено через 2 минуты
alkagolik, "строка выходит за пределы диапазона" , но почему так происходит не понятно
alkagolik
1511 / 617 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
01.03.2014, 22:05     Шифрование методом перестановки #23
выход за границы массива
Slava_dk
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 14
01.03.2014, 22:09     Шифрование методом перестановки #24
странно, а на 8ой студии на ноуте код до точки одинаков и все работает. На ПК 10я студия
-=ЮрА=-
Заблокирован
Автор FAQ
01.03.2014, 22:43     Шифрование методом перестановки #25
Slava_dk, я просил загрузить архив с проектом в тему чтобы можно было проанализаровать код в отладчике а не гадать по скрину ошибки что не так в проекте
Slava_dk
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 14
02.03.2014, 23:39     Шифрование методом перестановки #26
-=ЮрА=-, http://www.fayloobmennik.net/3622455
-=ЮрА=-
Заблокирован
Автор FAQ
03.03.2014, 21:36     Шифрование методом перестановки #27
Цитата Сообщение от Slava_dk Посмотреть сообщение
- написал
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
загрузи проект (удали из него ncb файл и папки Debug/Release),
, открываю архив и вижу папки дебаг релиз ипч, ладно. Теперь по коду что конкретно не понятно?Вот проект, всё работает.
Покажи скрином какой ввод осуществляешь, думаю производишь ввод чего то левого
Миниатюры
Шифрование методом перестановки  
Вложения
Тип файла: rar code_perestanovka.rar (11.7 Кб, 110 просмотров)
isaak
102 / 39 / 9
Регистрация: 17.10.2010
Сообщений: 653
04.03.2014, 22:27     Шифрование методом перестановки #28
-=ЮрА=- все работает!
Slava_dk
0 / 0 / 0
Регистрация: 11.12.2012
Сообщений: 14
08.03.2014, 16:40     Шифрование методом перестановки #29
-=ЮрА=-, Все, разобрался спасибо
Andrey_Prasol
0 / 0 / 0
Регистрация: 25.03.2014
Сообщений: 2
25.03.2014, 11:50     Шифрование методом перестановки #30
t01001, привет, извени за беспокойство, можешь помочь пожалуйста... нужен код проги на С++ который с Txt файла берет данные (текст)и переводит каждую букву в определенную цыфру, Например - „МОЯ ПЕРВАЯ ШИФРОГРАММА” буде у
зашифрованому на табл.1 вигляді мати вигляд: „12 14 31 32 15 05 16 02 00 31
32 24 08 20 16 14 03 16 00 12 12 00”.
Graas
0 / 0 / 0
Регистрация: 12.12.2014
Сообщений: 2
12.12.2014, 17:00     Шифрование методом перестановки #31
спасибо
omg_showTime
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 3
15.12.2014, 20:00     Шифрование методом перестановки #32
-=ЮрА=-, можешь помочь? исходный текст работает правильно, но когда я изменяю текстовый файл, на свой текст, вылазит та же ошибка, что и на скрине прерыдущем, тех файлов нет
-=ЮрА=-
Заблокирован
Автор FAQ
15.12.2014, 21:21     Шифрование методом перестановки #33
Цитата Сообщение от omg_showTime Посмотреть сообщение
-=ЮрА=-, можешь помочь? исходный текст работает правильно, но когда я изменяю текстовый файл, на свой текст, вылазит та же ошибка, что и на скрине прерыдущем, тех файлов нет
показывай что вводишь
omg_showTime
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 3
15.12.2014, 21:45     Шифрование методом перестановки #34
Код я немного приукрасил для своих целей

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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "string"
#include "conio.h"
 
using namespace std;
 
string encode(long lSize, long * lKey, string fPath)
{
    long i, j;
    string text, line, encstr;
    ifstream ifs(fPath.c_str());
    if(!ifs)
        cout << "Ошибка при открытии файла: " << fPath.c_str() << endl;
    else
    {
        while(getline(ifs, line))
            text += line;
        ifs.close();
        cout << "Исходный текст: " << text.c_str() << endl;
        for(i = 0; i < text.length(); i += lSize)
        {
            line = "";
            for(j = 0; j < lSize; j++)
                line += text[i + j];
            for(j = 0; j < lSize; j++)
                encstr += line[lKey[j]];
        }
    }
    return encstr;
}
 
string decode(long lSize, long * lKey, string fPath)
{
    long i, j;
    string text, line, decstr;
    ifstream ifs(fPath.c_str());
    if(!ifs)
        cout << "Ошибка при открытии файла: " << fPath.c_str() << endl;
    else
    {
        while(getline(ifs,line))
            text += line;
        ifs.close();
        cout << "Исходный текст: " << text.c_str() << endl;
        decstr = text;
        for(i = 0; i < text.length(); i += lSize)
        {
            for(j = 0; j < lSize; j++)
                decstr[i + lKey[j]] = text[i + j];
        }
    }
    return decstr;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    char chr;
    long lKey[5] = {0};
    long i, lSize = sizeof(lKey) / sizeof(lKey[0]);
    
    bool bMenu = true;
    string text;
    while(bMenu)
    {
        cout << "***Меню***" << endl;
        cout << "E - Шифровка" << endl;;
        cout << "D - Дешифровка" << endl;
        cout << (chr = _getch()) <<endl;
        switch(toupper(chr))
        {
        case 'E':
            cout << "Введите ключ шифровки: " << endl;
            for(i = 0; i < lSize; i++)
            {
                cout << "Ключ[" << i + 1 << "] = ";
                cin >> lKey[i];
            }
            text = encode(lSize, lKey, "encode.txt");
            cout << "Дешифрованный текст: " << text.c_str() << endl;
            break;
        case 'D':
            cout << "Введите ключ шифровки: " << endl;
            for(i = 0; i < lSize; i++)
            {
                cout << "Ключ[" << i + 1 << "] = ";
                cin >> lKey[i];
            }
            text = decode(lSize, lKey, "decode.txt");
            cout << "Зашифрованный текст: " << text.c_str() << endl;
            break;
        default:
            cout << "Вы нажали неподдерживаемую клавишу!" << endl;
            break;
        }
        cout << "Нажмите Y для повторного вывода меню" << endl;
        cout << "Нажмите любую клавишу для выхода";
        cout << (chr = _getch()) << endl;
        if(toupper(chr) != 'Y')
            bMenu = false;
        system("cls");
    }
    system("pause >> null");
    return 0;
}
В первом файле "showtime" - encode
Во втором "owithsem" - decode

Ошибка:

http://fotohost.by/images/2014/12/15...6247bac023.jpg
-=ЮрА=-
Заблокирован
Автор FAQ
15.12.2014, 22:11     Шифрование методом перестановки #35
omg_showTime, какой ключ ты вводишь?
Миниатюры
Шифрование методом перестановки  
omg_showTime
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 3
15.12.2014, 22:14     Шифрование методом перестановки #36
http://fotohost.by/images/2014/12/15/321.jpg
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2017, 13:29     Шифрование методом перестановки
Еще ссылки по теме:

C++ Шифрование методом простой перестановки
Шифрование / дешифрование (метод перестановки символов) C++
C++ Шифрование методом перестановки с заданным ключом текста любой длины
C++ Зашифровать текст методом простой одинарной перестановки
Из массива символов методом перестановки сформировать заданное слово C++

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

Или воспользуйтесь поиском по форуму:
Evgenia886
0 / 0 / 0
Регистрация: 22.01.2017
Сообщений: 3
22.01.2017, 13:29     Шифрование методом перестановки #37
а в шифре Вернама как ключ задать вручную?
Yandex
Объявления
22.01.2017, 13:29     Шифрование методом перестановки
Ответ Создать тему
Опции темы

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