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

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

11.12.2011, 12:05. Показов 5260. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru