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

Шифрование символов в файле - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Класс "окружность" http://www.cyberforum.ru/cpp-beginners/thread604520.html
Написать программу работы с окружностями. Окружность является объектом класса. Память под окружность должна выделяться динамически (с помощью new). Должны быть определены деструктор и следующие...
C++ Матрицы: сложения двух матриц (двумерных массивов) Необходимо написать программу сложения двух матриц (двумерных массивов) на языке СИ++. Даны матрицы A и B. Надо их объявить и заполнить случайным образом через random, распечатать, получить матрицу... http://www.cyberforum.ru/cpp-beginners/thread604506.html
C++ Множества
Дан текст на английском языке, который заканчивается точкой. В тексте удалить все гласные буквы, а согласные заменить на прописные.
C++ Текстовые файлы
Дан файл, содержащий текст на русском языке. Выбрать из него те символы, которые встречаются в нем только один раз, в том порядке, в котором они встречаются в тексте.
C++ куда воткнуть файл res? http://www.cyberforum.ru/cpp-beginners/thread604494.html
есть файл res и его надо как-то подключить . куда его положить? в папку проекта? в документации написано в "стандартная библиотека (папка) С++ Visual Studio/VC98/ Projects" но у меня нет папки...
C++ Visual Studio 6.0 вылетает с ошибкой Хочу добавить в проект файл. перехожу во вкладку где список файлов слева. контекстное меню-> add file и студия вылетает с ошибкой памяти чтото там. пробовал в только что созданом пустом проекте -... подробнее

Показать сообщение отдельно
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.06.2012, 06:20
Цитата Сообщение от Paster Посмотреть сообщение
Есть файл содержащий исходный набор символов(текст, строки и т.д.).
нужно составить программу для шифрования каждого символа исходного файла методом добавления определенного ключа, записать эту последовательность в другой файл, и дешифровать сообщение в третий файл.
Простейшими шифрами с ключом являются ксорка, циклический алфавитный сдвиг и замена символов по таблице отображения. Можно двигать/заменять хоть коды по всему шрифту. Ксорка - это побитовое исключающее И, на c++ делается через
C++
1
^
. Ключ - данное той же разрядности, с которым ксоришь, для расшифровки надо повторно заксорить с тем же ключом. Если повторно заксорить вместо ключа с текстом, то восстановишь ключ вместо текста. Таким образом, ксорка симметрична. Можно циклически менять байты/слова ключа в пределах всего сообщения, тогда ключь - массив элементов той же разрядности:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void Encode(char *text, *key, unsigned int KeyLength)
{
 char *p;
 unsigned  i;
 for (i=0, p=text; *(p-1)!=0, ++p, i=(i+1)%KeyLength)
 {
  *p^=key[i];
 }
}
void Decode(char *text, *key, unsigned int KeyLength)
{
 char *p;
 unsigned  i;
 for (i=0, p=text; *(p-1)!=key[i], ++p, i=(i+1)%KeyLength)
 {
  *p^=key[i];
 }
}
. Циклический сдвиг - это, например, "A" становится "В", "Б "- "Г" и так далее, а в конце "Э" - "Я", "Ю" - "А", "Я" - "Б". Или наоборот. Ключ - буква, в которую превращается "A", для расшифровки двигай в обратную сторону. Таким образом, циклический сдвиг асимметричен, но не в том смысле, какой в это вкладывают криптографы, так как оба ключа одинаково просто вычисляются друг по другу: если шифрующий "В", то дешифрующий "Ю". Пусть буква шифрующего ключа отстоит от "А" на n букв в право, тогда буква дешифрующего ключа отстоит от "Я" на n-1 букв влево и если буква дешифрующего ключа отстоит от "Я" на n букв влево, то буква шифрующего ключа отстоит от "А" на n+1 букв в право. Асимметричный эе шифр должне иметь асимметричную сложность вычисления ключей друг по другу. Но если циклический сдвиг алфавита рассматривать только как преоборазование, но не как шифр, то оно симметрично. Ключ может быть словом естественного языка, фразой, аброкадаброй, или вообще любым сочетанием букв, тогда буквы ключа циклически меняются по всему сообщению, аналогично циклической смене байтов ключа ксорки. Способ табличной шифрации и дешифрации и что есть ключ в этом случае комментировать не буду, это должно быть и так понятно каждому, кто знаком вообще со словом "таблица". Напишу только, что такие шифры тоже допускают циклическую смену ключа. Табличный шифр тоже симметричен в криптографическом значении слов "симметричный"/"асимметричный", но ассиметричен, как преобразование.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru