Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
0 / 0 / 0
Регистрация: 28.04.2014
Сообщений: 88

Шифрование текстового файла

16.03.2016, 19:00. Показов 6077. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужен код для шифрования русскоязычного текста методом простой подстановки(каждой букве алфавита ставится в соответствие другая буква, знаки препинания исключаются, буква Ё=Е, пробел заменяется на "знак абзаца в ворде"). Программа читает текст из файла и записывает зашифрованный текст в другой. Символы в зашифрованном тексте должны располагаться группами по 5 символов, группы разделены пробелами, по пять групп в строке. Составить программу-дешифратор, восстанавливающая исходный текст. Проверить работу программ на примере текста из 40-50 слов.
Строка шифровальной таблицы(исходные буквы считаются расположенными по алфавиту):
х у т э ц й г р ф ы н а ъ с и щ п б в д м з ж е ш ь ч я к ю о л

Буду рад любым идеям и вариантам, которые вы предложите!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.03.2016, 19:00
Ответы с готовыми решениями:

Шифрование текстового файла
Подскажите плз я голову сломал не знаю как делать, вот дан текстовый файл и надо произвести его шифрацию по нескольким условиям: 1....

Шифрование текстового файла методом Гронсфельда
доброго времени суток! помогите, пожалуйста, написать программу "из внешнего файла в формате «ТХТ» ввести текст и зашифровать/расшифровать...

Добавить в конец первого текстового файла содержимое второго текстового файла
Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла.

5
 Аватар для yrceus
88 / 88 / 80
Регистрация: 25.08.2013
Сообщений: 337
16.03.2016, 19:06
Лучший ответ Сообщение было отмечено Mdmaa как решение

Решение

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
#include <iostream>
#include <vector>
#include <string>
#include <Windows.h>
#include <fstream>
#include <cassert>
#include <locale>
using namespace std;
//------------------------------------------------------------------
void fllng(const char beg, const char end, vector<string> &alph) {
    for (char sym = beg; sym <= end; ++sym) {
        cout << sym;
        if (alph.back().size() == 6)
            alph.emplace_back();
        alph.back().append(1, sym);
    }
}
//-----------------------------------------------------------------
bool serch_sym(fstream &fail, vector<string> &alph, int &sym, int fl) {
    for (auto iter = alph.begin(); iter < alph.end(); ++iter) {
        int ind = iter->find(sym, 0);
        if (ind != string::npos) {
            fail.seekp(-1, fstream::cur);
            if (fl)
                if (++iter == alph.end() || iter->size() < ind)
                    sym = alph.begin()->at(ind);
                else
                    sym = iter->at(ind);
            else
                if (iter == alph.begin() && (--alph.end())->size() < ind)
                    sym = (alph.end() - 2)->at(ind);
                else if (iter == alph.begin())
                    sym = (--alph.end())->at(ind);
                else
                    sym = (--iter)->at(ind);
            if (fail << static_cast<char>(sym) << flush)
                return true;
            return false;
        }
    }
    return false;
}
//-----------------------------------------------------------------
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_CTYPE, "rus");
    vector<string> llatin(1);
    vector<string> lkiril(1);
    vector<string> ulatin(1);
    vector<string> ukiril(1);
    fllng('A', 'Z', ulatin);
    fllng('А', 'Я', ukiril);
    fllng('a', 'z', llatin);
    fllng('а', 'я', lkiril);
    fstream fail("Polib.txt", fstream::ate | fstream::in | fstream::out);
    if (!fail.is_open()) {
        fail.open("Polib.txt", fstream::out);
        fail.close();
        fail.open("Polib.txt", fstream::ate | fstream::in | fstream::out);
    }
    string sent;
    cout << "Введите строки для кодировки, для конца ввода Ctrl + Z\n";
    while (getline(cin, sent)) 
        fail << sent + '\n' << flush;
    cin.clear();
    fail.seekg(0, fstream::beg);
    int sym, fl = -1;
    while (fl < 0 || fl > 1) {
        cout << "Кодировать 1 разкодировать 0\n";
        cin >> fl;
        if (!cin.good()) {
            while (cin.get() != '\n');
            cin.clear();
        }
    }
    while ((sym = fail.get()) != EOF) {
        if (sym != 218 && sym >= 'A' && sym <= 'Z')
            assert(serch_sym(fail, ulatin, sym, fl));
        else if (sym >= 192 && sym <= 223)
            assert(serch_sym(fail, ukiril, sym, fl));
        else if (sym >= 'a' && sym <= 'z')
            assert(serch_sym(fail, llatin, sym, fl));
        else if (sym != 250 && sym >= 224 && sym <= 255)
            assert(serch_sym(fail, lkiril, sym, fl));
    }
    fail.close();
    return 0;
}
1
0 / 0 / 0
Регистрация: 28.04.2014
Сообщений: 88
27.03.2016, 20:21  [ТС]
А не мог бы объяснить строки кода, пожалуйста
0
 Аватар для yrceus
88 / 88 / 80
Регистрация: 25.08.2013
Сообщений: 337
27.03.2016, 20:25
А именно? И там на большой U латинской спотыкается, ее надо учесть)
0
0 / 0 / 0
Регистрация: 28.04.2014
Сообщений: 88
27.03.2016, 20:34  [ТС]
Растерялся в коде, а сдавать надо его)
Будут спрашивать, что означает одна, другая переменная и тд
0
 Аватар для yrceus
88 / 88 / 80
Регистрация: 25.08.2013
Сообщений: 337
27.03.2016, 21:18
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
#include <iostream>
#include <vector>
#include <string>
#include <Windows.h>
#include <fstream>
#include <cassert>
#include <locale>
using namespace std;
// шифр Полибия почитай принцип
//------------------------------------------------------------------
void fllng(const char beg, const char end, vector<string> &alph) { //
    for (char sym = beg; sym <= end; ++sym) { // записываем алфавит 
        if (alph.back().size() == 6)    // по шесть символов в строку
            alph.emplace_back();// переходим к пустой строке
        alph.back().append(1, sym); // записываем в строку - string.append() почитай
    }
}
//-----------------------------------------------------------------
bool serch_sym(fstream &fail, vector<string> &alph, int &sym, int fl) { // фун, меняет символ на нужный и зап. обратно в файл
    for (auto iter = alph.begin(); iter < alph.end(); ++iter) { // перебираем строки с символами(алфавит)
        int ind = iter->find(sym, 0);// ищем символ в строке и записываем позицию
        if (ind != string::npos) { // если нашли
            fail.seekp(-1, fstream::cur); // меняем позицию в файле на одну назад от только что прочитанного
            if (fl) // что-то если кодируем(или наоборот)
                if (++iter == alph.end() || iter->size() < ind)
                    sym = alph.begin()->at(ind);
                else
                    sym = iter->at(ind);
            else     // что-то если разкодируем(или наоборот)
                if (iter == alph.begin() && (--alph.end())->size() < ind)
                    sym = (alph.end() - 2)->at(ind);
                else if (iter == alph.begin())
                    sym = (--alph.end())->at(ind);
                else
                    sym = (--iter)->at(ind);
                if (fail << static_cast<char>(sym) << flush) //записываем измененный символ в файл
                    return true;
                return false; // если почему-то не записалось
        }
    }
    return false; // если как-то промахнулсь вообще...
}
//-----------------------------------------------------------------
int main() {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    setlocale(LC_CTYPE, "rus");
    vector<string> llatin(1); // векторы для алфавита
    vector<string> lkiril(1);
    vector<string> ulatin(1);
    vector<string> ukiril(1);
    fllng('A', 'Z', ulatin);// записываем алфавит 
    fllng('А', 'Я', ukiril);
    fllng('a', 'z', llatin);
    fllng('а', 'я', lkiril);
    fstream fail("Polib.txt", fstream::ate | fstream::in | fstream::out); // открываем файл с позицией в конце
    if (!fail.is_open()) {      // если не нашли файл, создаем                    // на чтение и на запись
        fail.open("Polib.txt", fstream::out);
        fail.close();
        fail.open("Polib.txt", fstream::ate | fstream::in | fstream::out);
    }
    string sent; 
    cout << "Введите строки для кодировки, для конца ввода Ctrl + Z\n";
    while (getline(cin, sent)) // построчко записываем в файл
        fail << sent + '\n' << flush;
    cin.clear(); // сбрасываем после EOF флаги состояния ввода
    fail.seekg(0, fstream::beg); // переходим в начало файла, перемещаем позицию
    int sym, fl = -1; // fl флаг, если единица кодируем, если ноль разкодируем
    while (fl < 0 || fl > 1) { //если не корректно ввели флаг
        cout << "Кодировать 1 разкодировать 0\n";
        cin >> fl;
        if (!cin.good()) {
            while (cin.get() != '\n');
            cin.clear();
        }
    }
    while ((sym = fail.get()) != EOF) { // в цикле перебираем файл посимвольно
        if (sym != 218 && sym >= 'A' && sym <= 'Z') // если не U(костыль) и верхний регистр латиницы
            assert(serch_sym(fail, ulatin, sym, fl)); //assert передает исключение, если в аргументе ложь
        else if (sym >= 192 && sym <= 223) // если кирилица
            assert(serch_sym(fail, ukiril, sym, fl));
        else if (sym >= 'a' && sym <= 'z') 
            assert(serch_sym(fail, llatin, sym, fl));
        else if (sym != 250 && sym >= 224 && sym <= 255) // если кириллица верхний регистр
            assert(serch_sym(fail, lkiril, sym, fl));
    }
    fail.close();
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2016, 21:18
Помогаю со студенческими работами здесь

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

Шифрование текстового файла.
Здравствуйте, дорогие формучани. В общем вопрос таков. Надо написать программу, которая будет шифровать файл или с добавлением битов в него...

Шифрование текстового файла
Помогите, пожалуйста,доделать программу. В консоли программа работала (просто с вводом текста в консоль) пытаюсь переделать под форму+...

Шифрование текстового файла
Есть текстовый документ, в нём содержится информация о сотрудниках: Иванов И.И. назначен на должность главный бухгалтер Петров В.А....

Шифрование текстового файла
Собственно как можно зашифровать текстовый файл? подскажите самый простой метод чтобы человек открывший файл в блокноте не смог извлечь...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru