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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Kostia1012
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 96
#1

Шифрование. Аргументы функции MAIN - C++

10.12.2013, 19:40. Просмотров 1531. Ответов 42
Метки нет (Все метки)

Привет всем Нужна помощь... С++...
Аргументы функции MAIN.

Фраза шифруется следующим образом: после первых двух символов вставляется слог БУ,после следующих двух вставляется КА, это повторяется до тех пор, пока в фразе есть хотя бы две буквы. Например, фраза Я ОТ БАБУШКИ УШЕЛ Шифруется так: Я БУОТКА ББУАБКАУШБУКИКА УБУШЕКАЛ. Напишите функции для шифрации и дешифрации некоторого текста. Функции main в качестве аргументов командной строки передавайте kod для кодирования или dekod для декодирования текста. Программу запускайте с переназначением стандартного ввода на файл.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2013, 19:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шифрование. Аргументы функции MAIN (C++):

Аргументы функции main - C++
Здравствуйте, программисты! Написать программу для определения, есть ли среди символов этой последовательности символы, образующие слово...

Аргументы функции main() - C++
Написать программу для определения, чередуются ли в данной последовательности символы ‘+’ и ‘-‘, и сколько раз каждый из этих символов...

Аргументы функции main - C++
Здравствуйте! Очень нужна Ваша помощь... Дано натуральное n. Для n, вводимого с клавиатуры получите действительную квадратную матрицу...

Аргументы функции main - C++
что значит определение оформить как функцию и сортировку оформить как функцию??

обработать аргументы функции main - C++
Всем привет. В main() передается строка и число. Как их можно обработать? На это выскакивает ошибка char* str= new char; ...

Аргументы для функции main() - C++
Я совершенно не понял, каким образом работает, допустим вот такой фрагмент программы: int main(int argc, char **argv) { if (argc>1) ...

42
Kostia1012
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 96
16.12.2013, 18:38  [ТС] #16
Помогите написать функции шифрования и дешифрования, пожалуйста...

Добавлено через 10 минут
И что значит вот эта строка?
C++
1
2
    if(!strcmp(*argv, "encode"))
return encode(), 0;
0
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
16.12.2013, 18:50 #17
Цитата Сообщение от Kostia1012 Посмотреть сообщение
И что значит вот эта строка?
Их тут две

Цитата Сообщение от Kostia1012 Посмотреть сообщение
if(!strcmp(*argv, "encode"))
Сравнить строку, на которую указывает argv с [COLOR="rgb(0, 100, 0)"]"encode"[/COLOR]. Если они равны, то [COLOR="rgb(0, 100, 0)"]strcmp[/COLOR] вернёт 0, а отрицание сделает из него истину. Соответственно для всех других строк условие ложно.

Цитата Сообщение от Kostia1012 Посмотреть сообщение
return encode(), 0;
Эм.. Ну это я нахимичил немного... Можно заменить на
C++
1
2
3
4
{
encode();
return 0;
}
0
Kostia1012
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 96
16.12.2013, 18:58  [ТС] #18
Указывает arcv с чем?...
Что это с "encode". ?...

Добавлено через 4 минуты
А функции шифрования и дешифрования как?...
0
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
16.12.2013, 19:04 #19
Цитата Сообщение от Kostia1012 Посмотреть сообщение
Указывает arcv с чем?...
Чего? Читал? Прочитай, потом спроси нормально.

Добавлено через 1 минуту
Цитата Сообщение от Kostia1012 Посмотреть сообщение
Что это с [COLOR="rgb(0, 100, 0)"]"encode"[/COLOR]. ?...
Не знаю, что ты хотел спросить.
Тут просто форум теги окрашивания шрифта не съел. Подразумевалось "encode".

Добавлено через 23 секунды
Цитата Сообщение от Kostia1012 Посмотреть сообщение
А функции шифрования и дешифрования как?...
Что как? Их надо написать. 2 функции: encode и decode.
0
Kostia1012
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 96
16.12.2013, 19:05  [ТС] #20
Ну допишите эти две функции, пожалуйста ну не понимаю я как что вам стоит...
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
16.12.2013, 19:07 #21
При всём незнании языка, ты - единственный, кто это хоть как понимает, всем остальным пример одной короткой шифрокки не даёт вообще ничего.
0
Kostia1012
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 96
16.12.2013, 19:12  [ТС] #22
Цитата Сообщение от Qwertiy Посмотреть сообщение
Чего? Читал? Прочитай, потом спроси нормально.

Добавлено через 1 минуту

Не знаю, что ты хотел спросить.
Тут просто форум теги окрашивания шрифта не съел. Подразумевалось "encode".

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

Что как? Их надо написать. 2 функции: encode и decode.
Ну допишите эти две функции, пожалуйста ну не понимаю я как, что вам стоит...
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
16.12.2013, 19:13 #23
Для всех, кроме тебя, это вообще не возможно, так как ты не объяснил шифра.
0
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
16.12.2013, 19:16 #24
Цитата Сообщение от taras atavin Посмотреть сообщение
всем остальным пример одной короткой шифрокки не даёт вообще ничего
Насколько я понимаю, надо в цикле читать по 2 символа, после них вставлять чередуя "БУ" или "КА". Это для шифрования.
А для дешифрования - просто выкинуть символы в позициях 3, 4, 7, 8, 11, 12 и т. д.
Но у меня нет желания это писать.
0
Kostia1012
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 96
16.12.2013, 19:18  [ТС] #25
Цитата Сообщение от taras atavin Посмотреть сообщение
Для всех, кроме тебя, это вообще не возможно, так как ты не объяснил шифра.
Да как это невозможно? Ведь все, что должна делать программа, написано в самом начале...

Фраза шифруется следующим образом: после первых двух символов вставляется слог БУ,после следующих двух вставляется КА, это повторяется до тех пор, пока в фразе есть хотя бы две буквы. Например, фраза Я ОТ БАБУШКИ УШЕЛ Шифруется так: Я БУОТКА ББУАБКАУШБУКИКА УБУШЕКАЛ. Напишите функции для шифрации и дешифрации некоторого текста. Функции main в качестве аргументов командной строки передавайте kod для кодирования или dekod для декодирования текста. Программу запускайте с переназначением стандартного ввода на файл.
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
16.12.2013, 19:18 #26
Далеко не факт, что там такой примитив.
0
Kostia1012
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 96
16.12.2013, 19:21  [ТС] #27
Цитата Сообщение от Qwertiy Посмотреть сообщение
Насколько я понимаю, надо в цикле читать по 2 символа, после них вставлять чередуя "БУ" или "КА". Это для шифрования.
А для дешифрования - просто выкинуть символы в позициях 3, 4, 7, 8, 11, 12 и т. д.
Но у меня нет желания это писать.
Для вас это три минуты делов, вы сами это понимаете, ну помогите уж человеку, пожалуйста... С вас ведь ничего не убудет...(
0
Qwertiy
821 / 629 / 75
Регистрация: 20.08.2013
Сообщений: 2,524
16.12.2013, 19:21 #28
Возможно и не такой, но описано именно так. И примеру соответствует.

PS: При реализации надо не забыть, что файл не обязан состоять из чётного числа символов. Дополнительно можно вспомнить, что в текстовом режиме последовательность "\r\n" заменяется на "\n" при чтении и записи, так что видимо она будет считаться за 1 символ. Перевести входной потой в бинарный режим ведь не получится без его переоткрытия, а переоткрытие поломает перенаправление, верно?
0
Kostia1012
1 / 1 / 0
Регистрация: 17.11.2013
Сообщений: 96
16.12.2013, 19:25  [ТС] #29
Цитата Сообщение от taras atavin Посмотреть сообщение
Далеко не факт, что там такой примитив.
Да, там просто... Это знакомство, так сказать, с данной темой...
Т.к. Я новичок, я не могу справиться сам...

Добавлено через 2 минуты
Цитата Сообщение от Qwertiy Посмотреть сообщение
Возможно и не такой, но описано именно так. И примеру соответствует.

PS: При реализации надо не забыть, что файл не обязан состоять из чётного числа символов. Дополнительно можно вспомнить, что в текстовом режиме последовательность "\r\n" заменяется на "\n" при чтении и записи, так что видимо она будет считаться за 1 символ. Перевести входной потой в бинарный режим ведь не получится без его переоткрытия, а переоткрытие поломает перенаправление, верно?
Напишите, прошу...
0
taras atavin
3570 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,567
17.12.2013, 07:58 #30

Не по теме:

Я начинал с ксорки. Она и в реализации проще, и вскрыть её, даже зная алгоритм, сложно. Ксорка - шифр битовых манипуляций, основанный на операции исключающее или. Простейшая ксорка есть применение исключающего с однобайтным ключом для каждого байта сообщения. Но такой вариант вскрывается на примере шифра одного байта: достаточно применить ту же операцию к исходному байту с шифрованным и получишь ключ. Более надёжную защиту обеспечивают длинные ключи с выборкой фрагмента ключа. Но накладывать ксорки с ключами равной длины, фрагменты которых чередуются по одному алгоритму, бесполезно: вся цепочка ксорок будет эквивалентна одной, ключ которой есть шифр остальных ключей друг другом. Если применять только ксорку, то она должна обеспечить стойкость за один раз, или она не годна. Но можно комбинировать её с перестановочными шифрами. Простейшим перестановочным шифром является скитала. Для скиталы применяется двумерный массив, линерализуемый дважды с разным порядком индексов. Массив заполняется исходным сообщением, или фрагментом сообщения фиксированного размера, при дефиците символов сразу за последним символом пишется терминальный, оставшиеся элементы заполняются мусором. А потом из этого массива читается шифрованная версия сообщения. Причём, при заполнении массива он линерализуется с одним порядком индексов, а при чтении оттуда шифрованной версии с другим. Например, можно при заполнении массива считать первый индекс младшим, а второй старшим, а при чтении наоборот. А можно при заполнении первый индекс считать старший, второй младшим, а при чтении шифрованной версии наоборот. Пусть используется массив s[N][M], обозначим k индекс линерализованного массива, i - первый индекс, j - второй. Тогда имеем две формулы: k=i+j*N (первый индекс младший, второй старший) и k=i*M+j (первый индекс старший, второй младший). При заполнении массива юзается одна, при чтении шифрованной версии другая. При расшифровке такой же массив заполняется шифрованной версией сообщения, а потом из него читается расшифрованная, при этом применяются те же самые две формулы линерализации, но в обратном порядке. Это тоже простой, но трудно вскрываемый шифр. Даже зная алгоритм, его сложно вскрыть, нужны точные размеры массива и порядок индексов при заполнении массива исходным сообщением. К сожалению, скитала может быть вскрыта на примере достаточно длинной шифровки, к которой есть исходное сообщение. А при ещё большей длине даже без исходного сообщения. Но не так просто, как ксорка. Теоретически не вскрываемы только шифры, чьи ключи содержат как минимум столько же информации, сколько её с их помощью шифруется.



Добавлено через 5 минут

Не по теме:

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



Добавлено через 2 минуты

Не по теме:

И это был алгоритм шифрования с ключом.

0
17.12.2013, 07:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2013, 07:58
Привет! Вот еще темы с ответами:

Аргументы командной строки в функции main - C++
Вопрос собственно говоря банальный в домашнем задании требуеться: параметр пронраммы передаеться через командную строку.Пример: ...

Как на это код добавить аргументы функции main? - C++
#include <iostream> #include <fstream> #include <iomanip> #include <cstdio> #include <Windows.h> using namespace std; int...

Как задать параметры запуска (аргументы командной строки) функции main? - C++
Как их задать в процессе запуска? т.е. пользователь запускает приложение и указывает параметры запуска при этом. Где про них почитать...

аргументы main - C++
int main() { } int main(int argc, char **argv) { }


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.