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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сравнение строк без нескольких символов http://www.cyberforum.ru/cpp-beginners/thread1101507.html
Здравствуйте, у меня вопрос по сабжу. Есть задание на написание парсера, всё бы хорошо, только не знаю как оптимально сравнивать строки за исключением некоторых символов. В общем так: есть строка, к примеру, name и есть входная строка str. В строке str: "%" соответствует 0 или более любым символов "-" соответствует 1 любому символу Например: Iv%
C++ Какие 2 сортировки надо знать, чтобы на все случаи жизни быть застрахованным? Всем добрый вечер! Форум уже давно читаю на правах гостя. Сегодня всерьез решил заняться темой сортировок. Форум очень интересный, уверен, не зря зарегистрировался. Собственно, сабж: Прочитал кучу статей о сортировках, о скорости, памяти, но разобраться оказалось трудновато. Раньше я думал, что достаточно знать QuickSort, что можно применять ее всюду и сортить абсолютно любые массивы за... http://www.cyberforum.ru/cpp-beginners/thread1101503.html
Неправильно считается произведение, начиная с n=5 C++
Составить программу вычисления и выдачи на печать суммы и произведения N элементов бесконечного числового ряда. Здесь и далее следует пользоваться операторами цикла for или while y=1(-3)9(-27)81 # include <stdio.h> void main () {int n, i=1, y=1, k=0, x=0; printf ("n\ Vvedite N"); scanf ("%d", &n);
Даны натуральные числа N и M C++
Даны натуральные числа N и M.вывести на экран все числители числа N, которые одновременно являются делителем M.
C++ Удалить файл с указанной фразой в названии http://www.cyberforum.ru/cpp-beginners/thread1101456.html
В общем, у нас есть файл "name_3435536362.txt". Символы "3435536362" у каждого пользователя свои. Нужно организовать удаление файла таким образом: удалить файл "name_*", где * - это указанные выше символы. То бишь, нужно удалить все файлы, в названии которых стоит "name_". Сам код удаления: if((p = fopen("D:/Program Files/name_3435536362.txt", "w"))== NULL) { puts( "\nФайл не...
C++ Цифры данного четырехзначного числа N образуют строго возрастающую последовательность Помогите пожалуйста. Только начинаю программировать и что-то у меня не особо выходит. цифры данного четырехзначного числа N образуют строго возрастающую последовательность. Решить нужно без условных операторов, чтобы выводило true/false using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication9 { подробнее

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

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

20.02.2014, 19:39. Просмотров 1016. Ответов 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ки...

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