Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.76/70: Рейтинг темы: голосов - 70, средняя оценка - 4.76
1 / 1 / 0
Регистрация: 17.06.2011
Сообщений: 7

Шифрование\Дешифрование

17.06.2011, 21:40. Показов 13638. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
Необходимо составить программу, реализующую шифрование и дешифрование с помощью своего метода.

Метод я придумал, допустим:
'А' меняем на '!'
'B' на '~'
и так далее...

Помогите составить алгоритм такого шифрования и дешифрования.
Заранее огромное спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.06.2011, 21:40
Ответы с готовыми решениями:

Шифрование и дешифрование сообщения по шифру Цезаря
Подобрать ключ и расшифровать сообщение: мсштфрдъмтссдвгейлтудхстчц_

Шифрование и Дешифрование бинарного файла с помощью подстановочного алфавита
Помогите пожалуйста реализовать программу, шифрующую и расшифровывающую бинарный файл с помощью подстановочного алфавита. Например: ...

Частота символов в *.txt (дешифрование)
Лабораторная работа№3 Написать прогу подсчета частоты встречаемости букв(символов) в файле sourcer.txt. Результат(частоты символов)...

31
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
17.06.2011, 21:51
Вот мой старый пример по шифровке-дешифровке текста

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
 
#include <memory>
 
// формула кодировки
void EncryptSymbol(int &iSymbol) {
        // здесь можно делать всё, что пожелаете,
        // только в пределах разумного :-)
        iSymbol = (iSymbol * 2);
        if (iSymbol)
                iSymbol -= 1;
}
 
// формула декодировки
void DecryptSymbol(int &iSymbol) {
        if (iSymbol)
                iSymbol += 1;
        iSymbol /= 2;
}
 
// --- расшифровываем файл
AnsiString LoadTextFromCryptedBin(const AnsiString &sFileName) {
        std::auto_ptr<TMemoryStream>MemStream(new TMemoryStream);
        MemStream->LoadFromFile(sFileName);
        MemStream->Position = 0;
        const int iBuffSize = MemStream->Size;
        std::auto_ptr<int>iBuffPtr(new int[iBuffSize]);
        MemStream->Read(iBuffPtr.get(), iBuffSize);
        std::auto_ptr<char>chBuff(new char[iBuffSize]);
        for (int i = 0; i < iBuffSize; i++) {
                // расшифровываем символ
                DecryptSymbol(iBuffPtr.get()[i]);
                chBuff.get()[i] = iBuffPtr.get()[i];
        }
        return AnsiString(chBuff.get());
}
 
// зашифровываем файл
void SaveTextToCryptedBin(const AnsiString & sFileName, const AnsiString &sText)
{
        const int iBuffSize = sText.Length();
        std::auto_ptr<int>iBuffPtr(new int[iBuffSize]);
        for (int i = 0; i < iBuffSize; i++) {
                iBuffPtr.get()[i] = sText[i + 1];
                // зашифровываем символ
                EncryptSymbol(iBuffPtr.get()[i]);
        }
        std::auto_ptr<TMemoryStream>MyMemStream(new TMemoryStream);
        MyMemStream->Write(iBuffPtr.get(), iBuffSize);
        MyMemStream->Position = 0;
        MyMemStream->SaveToFile(sFileName);
}
 
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject * Sender) {
 
        const AnsiString sCryptedText =
                "Testing string with different symbols 0123456789\n"
                "Special symbols - °©§¶\n"
                "Amount of strings!";
 
        Memo1->Lines->Text = sCryptedText;
 
        SaveTextToCryptedBin("c:\\MyTest.bin", sCryptedText);
 
        const AnsiString sDecryptedText = LoadTextFromCryptedBin("c:\\MyTest.bin");
        ShowMessage(sDecryptedText);
}
// ---------------------------------------------------------------------------
3
1 / 1 / 0
Регистрация: 17.06.2011
Сообщений: 7
17.06.2011, 21:55  [ТС]
Щас попробуем) но хотелось бы что нибудь по-проще) я все таки даже не похож на знатока С++
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
17.06.2011, 21:56
Вот мой метод шифрование-дешифрование:
C++
1
2
3
4
5
6
7
8
9
  AnsiString Crypt(AnsiString information)
  {
   AnsiString out;
    for (int i = 1; i < information.Length()+1; i++)
    {
     out += information[i] ^ 20;
    }
   return out;
  }
1
1 / 1 / 0
Регистрация: 17.06.2011
Сообщений: 7
17.06.2011, 22:00  [ТС]
Да и программу необходимо составить в косноле...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
17.06.2011, 22:34
Шифрования текста, сообщение №7

можно доработать под
Цитата Сообщение от ZyaT Посмотреть сообщение
Метод я придумал, допустим:
'А' меняем на '!'
'B' на '~'
и так далее...
и на форуме не так давно была тема, в которой обсуждался вопрос подстановки символов точь-в-точь по вашему методу, к сожалению, не помню названия, поищите по ключевым словам подстановка , перестановка , замена символов и т.п., как-то так было, по-моему.
0
1 / 1 / 0
Регистрация: 17.06.2011
Сообщений: 7
17.06.2011, 22:37  [ТС]
Как это сделать?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
17.06.2011, 22:51
там код был примерно такой:
C++
1
2
3
4
5
AnsiString  str = "абвгдежзийклмнопрстуфхцчшщъыьэюяАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
for (int i = 1; i < str.Length(); i++) {
  char chr = str[i+1]; // или +2, +3 и т.д.
  Lsbel->Caption = Lsbel->Caption + chr;
}
а если вы хотите своим методом, то можно еше проще - при нажатии на кнопку, например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
AnsiString  str = Edit->Text;
for (int i = 1; i < str.Length(); i++) {
  if (str[i] == "а") {
    str[i] = "k";
    Label->Caption = Lsbel->Caption + str[i];
  }
  if (str[i] == "б") {
    str[i] = "L";
    Label->Caption = Lsbel->Caption + str[i];
  }
  if (str[i] == "в") {
    str[i] = "1";
    Label->Caption = Lsbel->Caption + str[i];
  }
  // и т.д.
  // не оптимально, зато понятно :)
}
2
1 / 1 / 0
Регистрация: 17.06.2011
Сообщений: 7
17.06.2011, 22:53  [ТС]
Было бы замечательно, если бы не:
Цитата Сообщение от ZyaT Посмотреть сообщение
программу необходимо составить в косноле...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
17.06.2011, 23:00
так меняйте строку на массив чаров , лейбл на аут , или попросите Nouko - он добрый, он поможет, и, как раз к стати, онлайн, а я уже бегу .

и проверьте свои личные сообщения - потом в консоли сами сделаете
0
1 / 1 / 0
Регистрация: 17.06.2011
Сообщений: 7
17.06.2011, 23:10  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
Nouko
Он не в сети
Пытался заменить как Вы сказали
Цитата Сообщение от LK Посмотреть сообщение
массив чаров , лейбл на аут
Не получается
1
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
17.06.2011, 23:35
ZyaT, выложите свой проэкт, а мы посмотрим что в нем не так.

Добавлено через 27 секунд
Цитата Сообщение от ZyaT Посмотреть сообщение
Он не в сети
я афкаю
1
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
18.06.2011, 00:49
Цитата Сообщение от Nouko Посмотреть сообщение
Вот мой метод шифрование-дешифрование:
C++
1
2
3
4
5
6
7
8
9
AnsiString Crypt(AnsiString information)
  {
   AnsiString out;
    for (int i = 1; i < information.Length()+1; i++)
    {
     out += information[i] ^ 20;
    }
   return out;
  }
А ну-ка напиши для начала дешифровщик своего кода

Добавлено через 14 минут
А, и потренируйся на вот таком тексте
C++
1
"Это табуляция - \t!\nЭто латиница - test!\nХорошая кодировка"
0
1 / 1 / 0
Регистрация: 17.06.2011
Сообщений: 7
18.06.2011, 01:00  [ТС]
По теме есть что сказать?
0
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
18.06.2011, 01:11
ZyaT, а что тебе непонятно? Тебе разжевали и в рот положили, проглотить только надо.
Что тебе конкретно непонятно?

Добавлено через 2 минуты
Задача элементарная : строка - массив символов,
каждый символ - цифра от 0 до 255,
перебрать все символы строки от первого до последнего,
а зная что символ - это цифра, произвести с ней какие-то действия
по определённой формуле.

Добавлено через 2 минуты
Только не выходить за пределы меньше 0 и больше 255, так как текст превратится в бинарник

Добавлено через 1 минуту
А если текст превратился в бинарник, записать его в бинарный файл

П.С. Даже лучше, чтобы текст превратился в бинарник, тогда он труднее поддаётся анализу и дешифровке.
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
18.06.2011, 01:15
Maluda, он шифрует и дешифрует
Я использовал его в курсовой работе для шифрования мобильных номеров и данных о пользователе.
1
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
18.06.2011, 01:17
Цитата Сообщение от LK Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
AnsiString  str = Edit->Text;
for (int i = 1; i < str.Length(); i++) {
  if (str[i] == "а") {
    str[i] = "k";
    Label->Caption = Lsbel->Caption + str[i];
  }
  if (str[i] == "б") {
    str[i] = "L";
    Label->Caption = Lsbel->Caption + str[i];
  }
  if (str[i] == "в") {
    str[i] = "1";
    Label->Caption = Lsbel->Caption + str[i];
  }
  // и т.д.
  // не оптимально, зато понятно :)
}
Допустим, недостаток вот такого кодирования,
к примеру необходимо закодить XML,
C++
1
2
3
4
"<root>\n"
"\t<item>Текстовый узел, который необходимо зашифровать<item/>"
"\t<item> Name = \"Имя аттрибута\" <item/>\n"
"<root/>"
тогда при такой кодировке (не бинарной) очень чётко прослеживается,
что это XML структура. Зная, что ХМЛ файл имеет специальные символы,
очень легко будет найти формулу шифрования.

Поэтому кодировать однозначно надо в бинарный код
1
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
18.06.2011, 01:21
А еще круче вот это
Вложения
Тип файла: zip MD5.zip (2.8 Кб, 130 просмотров)
1
 Аватар для Maluda
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
18.06.2011, 01:28
Nouko, ух ты?

Так ты вот такую строку пробовал зашифровать, а потом расшифровать?
C++
1
 "Это табуляция - \t!\nЭто латиница - test!\nХорошая кодировка"
Добавлено через 3 минуты
Цитата Сообщение от Nouko Посмотреть сообщение
Я использовал его в курсовой работе для шифрования мобильных номеров и данных о пользователе.
И сколько тебе за курсовую поставили?

Добавлено через 2 минуты
Цитата Сообщение от Nouko Посмотреть сообщение
А еще круче вот это MD5.zip
В этом коде 255 строк, в моём коде 5 строк - результат один и тот же.
0
 Аватар для QVO
652 / 462 / 80
Регистрация: 26.10.2010
Сообщений: 1,263
Записей в блоге: 4
18.06.2011, 01:37
Цитата Сообщение от Maluda Посмотреть сообщение
И сколько тебе за курсовую поставили?
Не помню. Там суть была не шифровать, а бд средствами ооп с хранением данных в *.txt
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.06.2011, 01:37
Помогаю со студенческими работами здесь

Какие есть методы шифрования и дешифрования файлов
подскажите пожалуйста, какие есть методы шифрования и дешифрования файлов (скажем, тех же doc,xls,psd)

Как зашифровать и расшифровать данные, хранящиеся в файле
всем привет!!!!как зашифровать и расшифровать данные, хранящиеся в файле

Шифрование Вижинера
Добрый день, подскажите, пожалуйста.Осуществляла шифрования кода Вижинера,но при дешифровке вылезает ошибка и в заголовочнике dstring.h ...

Шифрование файла
Есть рабочая функция простого шифрования int TmF::Crypto(char key,AnsiString FileName){ int f; int n; //Число прочитанных байтов...

Шифрование текста
Здравствуйте. Я разрабатываю программу для хранения паролей и возникла необходимость как-то зашифровать эти данные. Причем в моей программе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru