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

Зашифровать текст заменив каждый символ другим символом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сформировать файл из значений случайных величин http://www.cyberforum.ru/cpp-beginners/thread1573055.html
Сформировать файл из значений случайных величин: 0.324, 0.524, 0.789, 0.556, 0.761, 0.248, 0.345, 0.911, 0.216. Начал изучать с++, вроде все задания даются более менее, а вот это ни как не могу сделать. Помогите кто чем может. Пожалуйста.
C++ Вычисления смешанного произведения векторов Даны три вектора а=(a1, a2, a3), b=(b1, b2, b3) и c=(c1, c2, c3). Написать программу вычисления смешанного произведения этих векторов. http://www.cyberforum.ru/cpp-beginners/thread1573041.html
C++ Функция нахождения подстроки
Здравствуйте. Функция GetSubstring принимает на вход строку, а возвращает подстроку длинной charCount с начальной позиции startIndex, а так же проверяет на возможность вывода подстроки. В тех случаях когда строку подстроку вывести нельзя функция правильно отрабатывает, но когда это возможно выводится нечитаемая ересь, плиз помогите #include "stdafx.h" #include <stdio.h> #include <iostream>...
C++ В файле найти число групп букв начинающихся и оканчивающихся одной и той же буквой
Дан текст. Каждый символ которого может быть малой буквой, цифрой или одним из знаков +, -, *. Группой букв будем называть такую совокупность последовательно расположенных букв, которой непосредственно не предшествует и за которой непосредственно не следует буква. Аналогично определить группу цифр и группу знаков. Найти число таких групп букв, которые начинаются и кончаются одной и тойже буквой.
C++ Code::Blocks работа программы на других ПК http://www.cyberforum.ru/cpp-beginners/thread1572986.html
Здравствуйте, участники форума. Недавно написал программу, но столкнулся с такой проблемой: Этот exe-шник не работает на других компьютерах, где не установлен компилятор g++/gcc. Что нужно сделать для того, чтобы он работал.
C++ Написать функцию перестановки рядов матрицы относительно вектора транспозиции В С++ не силен. Попалось задание такого плана: написать функцию перестановки рядов матрицы относительно вектора транспозиции. Помогоите пожалуйста решить эту задачу. Какими способами ее можно решить? Какие библиотеки юзать? Какой алгоритм вообще может быть? подробнее

Показать сообщение отдельно
Alterex
 Аватар для Alterex
24 / 10 / 4
Регистрация: 06.11.2015
Сообщений: 37
07.11.2015, 02:55     Зашифровать текст заменив каждый символ другим символом
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
#include <iostream>
#include <vector>
 
std::string Decrypt(std::string const& text, size_t key, std::vector<char> const& char_set);
std::string Encrypt(std::string const& text, size_t key, std::vector<char> const& char_set);
 
int main()
{
    char const char_arr[] = " !\"'(),-.:;?АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
 
    using namespace std;
 
    try
    {
        locale::global(locale("Russian"));
 
        vector<char> const char_set(char_arr, char_arr + sizeof(char_arr) / sizeof(char) - 1);
        size_t key = 1;
        string source_text = "Шифр Цезаря один из самых простых и наиболее широко известных методов шифрования.";
        string encrypted_text = Encrypt(source_text, key, char_set);
        string decrypted_text = Decrypt(encrypted_text, key, char_set);
 
        cout << source_text.c_str() << endl;
        cout << encrypted_text.c_str() << endl;
        cout << decrypted_text.c_str() << endl;
 
        string illegal_source_text = "A Caesar cipher is one of the simplest and most widely known encryption techniques.";
        string illegal_encrypted_text = Encrypt(illegal_source_text, key, char_set);
    }
    catch (exception& ex)
    {
        cerr << "An error has occurred: " << ex.what() << endl;
    }
 
    return 0;
}
 
std::string Decrypt(std::string const& text, size_t key, std::vector<char> const& char_set)
{
    std::string decrypted_text;
    decrypted_text.resize(text.size());
 
    for (size_t idx_char = 0; idx_char < text.size(); idx_char++)
    {
        bool illegal_char = true;
 
        for (size_t idx_chipher = 0; idx_chipher < char_set.size(); idx_chipher++)
        {
            if (char_set.at(idx_chipher) == text.at(idx_char))
            {
                illegal_char = false;
                size_t idx = idx_chipher < key ? char_set.size() - key : idx_chipher - key;
                decrypted_text.at(idx_char) = char_set.at(idx);
                break;
            }
        }
 
        if (true == illegal_char)
        {
            throw std::exception("An illegal character was encountered");
        }
    }
 
    return decrypted_text;
}
 
std::string Encrypt(std::string const& text, size_t key, std::vector<char> const& char_set)
{
    std::string encrypted_text;
    encrypted_text.resize(text.size());
 
    for (size_t idx_char = 0; idx_char < text.size(); idx_char++)
    {
        bool illegal_char = true;
 
        for (size_t idx_chipher = 0; idx_chipher < char_set.size(); idx_chipher++)
        {
            if (char_set.at(idx_chipher) == text.at(idx_char))
            {
                illegal_char = false;
                size_t idx = (idx_chipher + key) % char_set.size();
                encrypted_text.at(idx_char) = char_set.at(idx);
                break;
            }
        }
 
        if (true == illegal_char)
        {
            throw std::exception("An illegal character was encountered");
        }
    }
 
    return encrypted_text;
}
 
Текущее время: 10:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru