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

Шифрование символов в файле - 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
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.06.2012, 07:37
Я как то делал последовательно-циклическую ксорку с тремя ключами разной длины: каждый байт сообщения последовательно ксорится с байтами всех трехё ключей, а в пределах сообщения байты каждого ключа меняются циклически. И длина ключей не кратна. Специально брались три простых числа на длины: 2, 3 и 5 байт.
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
void Encode(uint8_t *Data, uint8_t *Key1, uint8_t *Key2, uint8_t Key3, unsigned long int Length)
{
 uint8_t *p;
 uint8_t *Last;
 int i;
 for (Last=Data+Length-1, p=-Data, i=0; p<=Last; ++p, i=(i+1)%2)
 {
  *p^=Key1[i];
 }
 for (Last=Data+Length-1, p=-Data, i=0; p<=Last; ++p, i=(i+1)%3)
 {
  *p^=Key2[i];
 }
 for (Last=Data+Length-1, p=-Data, i=0; p<=Last; ++p, i=(i+1)%5)
 {
  *p^=Key3[i];
 }
}
void Decode(uint8_t *Data, uint8_t *Key1, uint8_t *Key2, uint8_t Key3, unsigned long int Length)
{
 uint8_t *p;
 uint8_t *Last;
 int i;
 for (Last=Data+Length-1, p=-Data, i=0; p<=Last; ++p, i=(i+1)%5)
 {
  *p^=Key3[i];
 }
 for (Last=Data+Length-1, p=-Data, i=0; p<=Last; ++p, i=(i+1)%3)
 {
  *p^=Key2[i];
 }
 for (Last=Data+Length-1, p=-Data, i=0; p<=Last; ++p, i=(i+1)%2)
 {
  *p^=Key1[i];
 }
}
Добавлено через 5 минут
Фокус в том, что все три ключа эквивалентны одному 30-ти байтному с дырявым даиапазоном допустимых значений, но их суммарная длина всего 10 байт. И если не знать, что ключей 3, что они не распределены по собщению, как байты в обычной циклической ксорке, а вот так вот накладываются и какой они на самом деле длины, то можно долго подбирать варианты ключа, каких быть вообще не могло.

Добавлено через 30 минут
Есть ещё перестановочные шифры. В этих шифрах элементы сообщения не заменяются, а переставляются. Пропробуй прочитать: "рнёрп сотщвесыаЕф е еньчтеошыи". Но здесь все символы те же, что и в незашифрованнной версии, только ни перпутаны.

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