Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 16

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

11.12.2011, 12:05. Показов 4990. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
"Один из методов шифрации называется наложением гаммы. Делается это следующим образом: берется некоторое случайное число в диапазоне от 127 до 255 — гамма, и код каждого символа строки заменяется кодом, получающимся в результате операции: новый код=старый код XOR гамма.
Написать программу, реализующую:
• данный метод шифрации;
• дешифрацию строки при заданной гамме.

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

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

Добавлено через 13 часов 57 минут
Я так поняла, что нужно взять буквы из моей строки, представить их в двоичном коде и сложить с двоичным представлением буквы в новой полученной гамме (массиве).
Но не знаю, как реализовать в программе такое действие: Ввожу строку, и данный массив символов представляется в виде массива индекса данных элементов из массива "Алфавит".
Кто-нибудь знает как это можно реализовать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.12.2011, 12:05
Ответы с готовыми решениями:

Шифрация
Шифрация. Один из методов шифрации называется наложением гаммы. Делается это следующим образом: берется некоторое случайное число в...

Шифрация битов
пyтём смeны мeстaми 0-гo и 1-гo битoв, 2-гo и 3-гo, … , 30-гo и 31-гo битoв. Фyнкция дoлжнa принимaть в кaчeствe пaрaмeтрa пeрeмeннyю...

Шифрация и дешифрация по квадрату Полибия
Перенесено из темы https://www.cyberforum.ru/csharp-beginners/thread441477.html niutsu, а на с++ код написать можете?

33
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.12.2011, 13:13
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от alkagolik Посмотреть сообщение
раскройте пожалуйста
Если гамма имеет период, то в общем случае такой шифр называется шифров Виженера, для которого имеются эффективные методы взлома.

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

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

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

Да, она будет слабой (даже не то слово), но хотя бы период не 8 битам будет
1
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.12.2011, 13:18
Thinker, т.е. желательно, чтобы для каждого символа был случайный, ранее не использовавшийся ключ?
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.12.2011, 13:20
Цитата Сообщение от soon Посмотреть сообщение
Thinker, т.е. желательно, чтобы для каждого символа был случайный, ранее не использовавшийся ключ?
Не использовавшейся ранее - так не получится для больших сообщений, а в плане случайный - в точку попали)
1
0 / 0 / 0
Регистрация: 10.12.2011
Сообщений: 16
11.12.2011, 13:23  [ТС]
Цитата Сообщение от soon Посмотреть сообщение
Deviaphan, А что не так с cstring?

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

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

И, к сожалению, по условию у меня текст вводится с консоли, то есть он может быть любым... Нужна программа, шифрующая любой текст, вводимый с консоли.
0
 Аватар для soon
2554 / 1319 / 178
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.12.2011, 13:27
Цитата Сообщение от Сольвейг Посмотреть сообщение
И, к сожалению, по условию у меня текст вводится с консоли, то есть он может быть любым... Нужна программа, шифрующая любой текст, вводимый с консоли.
Хорошо, что мешает чуть-чуть подредактировать текст и написать так, как вам надо? Функция у вас есть, задаете строку и гамму с клавиатуры, передаете в функцию, выводите строку - вуаля!
Я не ставил себе задачу написать за вас всю программу, я лишь показал как это делается. Допиливать - уже ваше дело
0
Эксперт С++
 Аватар для Thinker
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
11.12.2011, 13:30
Цитата Сообщение от Deviaphan Посмотреть сообщение
Тут период равен вообще единице.)

Не по теме:

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

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

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

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

Цифры выводятся потому, что:
0) Есть строка зашифрованная с ключом 157
1.0) Мы вводим верный ключ. Программа снова шифрует строку с ключом 157, и мы получаем исходную строку. Иными словани разшифровывается.
1.1) Мы вводим неверный ключ. Программа шифрует строку с неверным ключом. Ей без разницы, шифровалась эта строка ранее, или нет. Поэтому, чтобы получить исходную строку, нужно будет снова ввести тот самый неверный ключ, чтобы программа расшифровала строку до состояния *зашифрованная с ключом 157*, затем ввести верный ключ. Т.к. программа расчитана на ввод одного ключа, она вам выдаст получившуюся строку и завершит на этом свою работу.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
11.12.2011, 14:25

Не по теме:

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

Не по теме:

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

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



Добавлено через 1 минуту
Цитата Сообщение от soon Посмотреть сообщение
А что не так с cstring?
То, что std::string определена в хэдэре string, а cstring это аналог string.h.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.12.2011, 14:25

Шифрация/дешифрация кода Морзе, нужны комментарии к коду
string Shifr(string a) { string str = ""; for (int i = 0; i < a.size(); i++) { if (a >= '0' && '9' >= a) str += numbers -...

Шифрация методом простой замены
Такая проблема-недавно начал осваивать билдер, уже 5 часов туплю. Задача: есть два алфавита и словоНужно заменить буквы в слове по новому...

Шифрация и дешифрация упаковкой рюкзака (Криптография)
Помогите плиз написать код на плюсах Задание: Шифрация упаковкой рюкзака. Программа из трех независимых частей 1. выбор секретного...

Шифрация
2 процедуры: первая шифрует прибавляя к ordery символа ключ+3 вторая дешифрует.. размерность в 256 и первые 32 управляющих символа учтены.....

шифрация пароля
сделал программу которая записывает данные в sql базу на delphi. но такая неудача - пароль передается серверу в открытом виде....


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru