Форум программистов, компьютерный форум, киберфорум
Наши страницы

Метод одноалфавитного шифрования с заданным смещением - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сравнение строк без нескольких символов http://www.cyberforum.ru/cpp-beginners/thread1101507.html
Здравствуйте, у меня вопрос по сабжу. Есть задание на написание парсера, всё бы хорошо, только не знаю как оптимально сравнивать строки за исключением некоторых символов. В общем так: есть...
C++ Какие 2 сортировки надо знать, чтобы на все случаи жизни быть застрахованным? Всем добрый вечер! Форум уже давно читаю на правах гостя. Сегодня всерьез решил заняться темой сортировок. Форум очень интересный, уверен, не зря зарегистрировался. Собственно, сабж: Прочитал... http://www.cyberforum.ru/cpp-beginners/thread1101503.html
Неправильно считается произведение, начиная с n=5 C++
Составить программу вычисления и выдачи на печать суммы и произведения N элементов бесконечного числового ряда. Здесь и далее следует пользоваться операторами цикла for или while y=1(-3)9(-27)81 ...
Даны натуральные числа N и M C++
Даны натуральные числа N и M.вывести на экран все числители числа N, которые одновременно являются делителем M.
C++ Удалить файл с указанной фразой в названии http://www.cyberforum.ru/cpp-beginners/thread1101456.html
В общем, у нас есть файл "name_3435536362.txt". Символы "3435536362" у каждого пользователя свои. Нужно организовать удаление файла таким образом: удалить файл "name_*", где * - это указанные выше...
C++ Цифры данного четырехзначного числа N образуют строго возрастающую последовательность Помогите пожалуйста. Только начинаю программировать и что-то у меня не особо выходит. цифры данного четырехзначного числа N образуют строго возрастающую последовательность. Решить нужно без условных... подробнее

Показать сообщение отдельно
Alex111111
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 5

Метод одноалфавитного шифрования с заданным смещением - C++

20.02.2014, 19:39. Просмотров 1127. Ответов 0
Метки (Все метки)

Доброго времени суток. У меня в институте начался курс криптографии и как полагается первая лаба зашифровать строку шифрома Цезаря (знаю что сто раз было).
Задание звучит так:
Составить программу, шифрующую сообщения, состоящие из строчных букв кириллицы другими буквами того же самого алфавита. Для получения строки использовать генератор случайных чисел. Полученную последовательность циклически сдвинуть на число символов, равное номеру автора в списке. Зашифровать фамилию, имя и отчество автора. Расшифровать шифрованную строку. Вывести зашифрованную строку, а также исходную и расшифрованную строки. Подсчитать частоту появления букв в исходном и зашифрованном текстах. Сделать проверку на присутствие в строке символа, отсутствующего в алфавите.
В поисках решения получилось состряпать вот такой код:
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
#include <iostream>
#include <windows.h>
 
using namespace std; 
 
int main ()
 
{
    int shift = 18; //Сдвиг шифра, по заданию
     
    int i; 
    int j; 
     
    string line; 
    string desh;
    string desh1;
    
//---------------Шифрование-----------------------------------   
char str2 [30] = "ИВАНОВ ИВАН ИВАНОВИЧ"; //Шифруемая строка
::CharToOem (str2,str2);
 
line = str2; 
 
for (i = 0; i<line.length(); i++)
{
     line[i] = char(line[i] + shift);
} 
//---------------Деифрование----------------------------------- 
desh = line;
 
for (j = 0; j<desh.length(); j++)
{       desh[j] = char(desh[j] - shift);
        desh1 = desh;     
        }
        
//---------------Вывод----------------------------------------
char str3 [18] = "Исходыная строка:";
::CharToOem (str3,str3);
cout << str3 << " " << str2 << endl;
cout << endl;
 
char str4 [23] = "Зашифрованная строка:";
::CharToOem (str4,str4);
cout << str4 << " " << line << endl;
cout << endl;
 
char str5 [23] = "Расшифрованная строка:";
::CharToOem (str5,str5);
cout << str5 << " " << desh1 << endl;
cout << endl;
 
char str6 [100] = "Шифруемое сообщение содержит символы не входящие в алфавит.";
::CharToOem (str6,str6);
cout << str6 << endl;
cout << endl;
 
system("PAUSE");
return 0;    
}
Да, Char'ов тут много, но это вызвано тем что в инсте очень древние компы и там русские текст через
C++
1
setlocale(LC_ALL,"Russian");
неизбежно превращается в кракозяблики. А демонстрировать прогу как то надо.
Программа шифрует строку: Иванов Иван Иванович и получает зашифрованную строку: ЪФТЯаФ2ЪФТЯ2ЪФТЯаЪй

На все это дело препод мне говорит, что шифрует програм ок, но лаба не выполнена т.к. программа работает со всей кодировкой ASCII и пробелы шифруются не пробелами, а цифрами 2.

Так вот надо, что бы программа использовала не ASCII, а только русский алфавит засунутый в char; пробелы были нормальными, а не 2ки...

Подскажите пожалуйста как это реализовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru