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

Шифрация (С++) - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
Сольвейг
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 16
11.12.2011, 12:05     Шифрация (С++) #1
"Один из методов шифрации называется наложением гаммы. Делается это следующим образом: берется некоторое случайное число в диапазоне от 127 до 255 — гамма, и код каждого символа строки заменяется кодом, получающимся в результате операции: новый код=старый код XOR гамма.
Написать программу, реализующую:
• данный метод шифрации;
• дешифрацию строки при заданной гамме.

Входные данные:
• шифруемая строка.

Выходные данные:
• гамма;
• зашифрованная строка."
Совсем не понимаю, что от меня хотят
Подскажите, пожалуйста, с чего начать.

Добавлено через 13 часов 57 минут
Я так поняла, что нужно взять буквы из моей строки, представить их в двоичном коде и сложить с двоичным представлением буквы в новой полученной гамме (массиве).
Но не знаю, как реализовать в программе такое действие: Ввожу строку, и данный массив символов представляется в виде массива индекса данных элементов из массива "Алфавит".
Кто-нибудь знает как это можно реализовать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2011, 12:05     Шифрация (С++)
Посмотрите здесь:

Delphi шифрация кода программы
шифрация пароля Delphi БД
Delphi БД Шифрация и дешифрация пароля
Шифрация строки в sha256 C#
Delphi Шифрация Трафика
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.12.2011, 13:13     Шифрация (С++) #21
Цитата Сообщение от alkagolik Посмотреть сообщение
раскройте пожалуйста
Если гамма имеет период, то в общем случае такой шифр называется шифров Виженера, для которого имеются эффективные методы взлома.

Добавлено через 1 минуту
Цитата Сообщение от Deviaphan Посмотреть сообщение
Тут период равен вообще единице.)
С чего вы взяли?
Какой период здесь: 100110011001 ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Сольвейг
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 16
11.12.2011, 13:14  [ТС]     Шифрация (С++) #22
Цитата Сообщение от soon Посмотреть сообщение
1) Уверены, что на С++? [SPOILER="Код для Си"]
2) Ошибки приведите.
Код для Си запускается без ошибок. Но вместо зашифрованного текста одни нули...
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.12.2011, 13:15     Шифрация (С++) #23
Deviaphan, А что не так с cstring?

Добавлено через 34 секунды
Цитата Сообщение от Сольвейг Посмотреть сообщение
Но вместо зашифрованного текста одни нули...
157 вводили?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.12.2011, 13:18     Шифрация (С++) #24
soon, можно хотя бы на базе одного байта с помощью линейного конгруэнтного генератора сформировать гамму:

http://www.cyberforum.ru/cgi-bin/latex.cgi?x_n = ax_{n-1} + b

Да, она будет слабой (даже не то слово), но хотя бы период не 8 битам будет
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.12.2011, 13:18     Шифрация (С++) #25
Thinker, т.е. желательно, чтобы для каждого символа был случайный, ранее не использовавшийся ключ?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.12.2011, 13:20     Шифрация (С++) #26
Цитата Сообщение от soon Посмотреть сообщение
Thinker, т.е. желательно, чтобы для каждого символа был случайный, ранее не использовавшийся ключ?
Не использовавшейся ранее - так не получится для больших сообщений, а в плане случайный - в точку попали)
Сольвейг
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 16
11.12.2011, 13:23  [ТС]     Шифрация (С++) #27
Цитата Сообщение от soon Посмотреть сообщение
Deviaphan, А что не так с cstring?

Добавлено через 34 секунды

157 вводили?
Выдаётся текст до шифровки

И, к сожалению, по условию у меня текст вводится с консоли, то есть он может быть любым... Нужна программа, шифрующая любой текст, вводимый с консоли.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.12.2011, 13:27     Шифрация (С++) #28
Цитата Сообщение от Сольвейг Посмотреть сообщение
И, к сожалению, по условию у меня текст вводится с консоли, то есть он может быть любым... Нужна программа, шифрующая любой текст, вводимый с консоли.
Хорошо, что мешает чуть-чуть подредактировать текст и написать так, как вам надо? Функция у вас есть, задаете строку и гамму с клавиатуры, передаете в функцию, выводите строку - вуаля!
Я не ставил себе задачу написать за вас всю программу, я лишь показал как это делается. Допиливать - уже ваше дело
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.12.2011, 13:30     Шифрация (С++) #29
Цитата Сообщение от Deviaphan Посмотреть сообщение
Тут период равен вообще единице.)

Не по теме:

Хотя, если вы имели ввиду период в байтах, то абсолютно правы

Сольвейг
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 16
11.12.2011, 13:34  [ТС]     Шифрация (С++) #30
Цитата Сообщение от soon Посмотреть сообщение
Хорошо, что мешает чуть-чуть подредактировать текст и написать так, как вам надо? Функция у вас есть, задаете строку и гамму с клавиатуры, передаете в функцию, выводите строку - вуаля!
Я не ставил себе задачу написать за вас всю программу, я лишь показал как это делается. Допиливать - уже ваше дело
Просто строка выводится незашифрованная. Не понимаю, почему.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.12.2011, 13:37     Шифрация (С++) #31
Потому, что она сначала шифруется с ключом 157, а затем дешифруется с тем же ключом, следовательно мы и имеем на выходе незашифрованную строку. При вводе другого ключа, строка будет еще раз шифроваться с введенным ключом, следовательно нужно будет 2 раза расшифровывать.
Сольвейг
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 16
11.12.2011, 13:44  [ТС]     Шифрация (С++) #32
Цитата Сообщение от soon Посмотреть сообщение
Потому, что она сначала шифруется с ключом 157, а затем дешифруется с тем же ключом, следовательно мы и имеем на выходе незашифрованную строку. При вводе другого ключа, строка будет еще раз шифроваться с введенным ключом, следовательно нужно будет 2 раза расшифровывать.
Если ввожу другой ключ, на выходе получаются цифры.

Просто как я понимаю, при данном методе шифрования у меня на выходе тоже должны быть буквы. А здесь то цифры, то странные символы получаются. Вот я и хочу уточнить, правильно ли это. Или что-то я некорректно ввожу или некорректно работает.

Огромное Вам спасибо за помощь! Теперь я хоть представляю как это работает
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.12.2011, 13:55     Шифрация (С++) #33
Еще раз. Моя программа - пример разшифровывания зашифрованного текста. Только пример. Но в ней есть рабочая функция. Которая принимает указатель на первый символ в строке. И гамму. И шифрует строку. Все остальное докручиваете сами, тут даже знаний никаких не надо.

Цифры выводятся потому, что:
0) Есть строка зашифрованная с ключом 157
1.0) Мы вводим верный ключ. Программа снова шифрует строку с ключом 157, и мы получаем исходную строку. Иными словани разшифровывается.
1.1) Мы вводим неверный ключ. Программа шифрует строку с неверным ключом. Ей без разницы, шифровалась эта строка ранее, или нет. Поэтому, чтобы получить исходную строку, нужно будет снова ввести тот самый неверный ключ, чтобы программа расшифровала строку до состояния *зашифрованная с ключом 157*, затем ввести верный ключ. Т.к. программа расчитана на ввод одного ключа, она вам выдаст получившуюся строку и завершит на этом свою работу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2011, 14:25     Шифрация (С++)
Еще ссылки по теме:

C++ Шифрация битов
Delphi Delphi и шифрация кода
Шифрация наложением гаммы Pascal

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

Или воспользуйтесь поиском по форуму:
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
11.12.2011, 14:25     Шифрация (С++) #34

Не по теме:

Цитата Сообщение от Thinker Посмотреть сообщение

Не по теме:

Хотя, если вы имели ввиду период в байтах, то абсолютно правы

Ну да, в байтах. Ведь шифруются байты и маска применяется именно к байтам.)



Добавлено через 1 минуту
Цитата Сообщение от soon Посмотреть сообщение
А что не так с cstring?
То, что std::string определена в хэдэре string, а cstring это аналог string.h.
Yandex
Объявления
11.12.2011, 14:25     Шифрация (С++)
Ответ Создать тему
Опции темы

Текущее время: 21:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru