34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
1

Кодирование/Декодирование

17.04.2015, 17:17. Показов 4789. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер!

Народ выручайте)))
Имеется функция, которая как кодирует так и декодирует текст:
C++
1
2
3
4
5
6
7
8
9
AnsiString XOR_Crypt(AnsiString in, AnsiString pass)
{
AnsiString out;
for (int x=1;x<in.Length()+1;x++)
        {
        out += (char)(in[x] ^ pass[x%pass.Length()+1]);
        }
return out;
}
В шифровании я "полный чайник", помогите разораться, что тут происходит:
Какие параметры функция принимает, что происходит в цикле и т.п. (в общем Вы и так прекрасно знаете)

Покопался в интернете нашел много ссылок где есть эта функция, но не написано, что она делает:
Кодирование и декодирование теста
http://www.cyberguru.ru/cbuild... nnykh.html
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.04.2015, 17:17
Ответы с готовыми решениями:

Кодирование и декодирование теста
Доброго времени ссуток, есть система тестов в которой сохраняются результаты в txt файл в виду...

Indy кодирование/декодирование, TIdEncoderMIME (IdBase64Encoder)
Здравствуйте! Нужно шифровать, расшифровывать данные, остановился на компонентах TIdEncoderMIME...

Декодирование даты
Доброе утро! В чем проблема ? Почему не компилируется ? где копать ? Спасибо! unsigned short...

Декодирование строки из URL
Подскажыте есть ли аналог функцыи в С++ Builder Синтаксис: string urldecode (string str)...

5
случайный прохожий
3071 / 2107 / 630
Регистрация: 20.07.2013
Сообщений: 5,657
17.04.2015, 20:07 2
in - входная строка; pass - пароль
На выходе - строка, полученная с помощью исключающего ИЛИ (XOR, ^) https://ru.wikipedia.org/wiki/... BB%D1%8E_2.
В цикле поочередно берется каждый (а) символ входной строки и (б) символ пароля под номером
C++
1
x%pass.Length()+1
(т.е. определяемый как остаток от деления x на длину пароля с прибавлением в итоге 1).
х принимает значение от 1 до длины входной строки.
К (а) и (б) применяется исключающее ИЛИ, результат "переводится" в char и добавляется к выходной строке (out).
Как в случае шифрования, так и расшифровки пароль должен быть один и тот же, только в первом случае in - кодируемая строка, во втором - декодируемая.
out - возвращаемое в качестве результата значение работы функции.
В заключение скажу, что для понимания кода не нужно быть семи пядей во лбу. Требуются лишь базовые знания.
Но если воспринимать код проблемно, то тут стоит задуматься. Очень серьезно.
1
34 / 21 / 11
Регистрация: 20.10.2013
Сообщений: 577
17.04.2015, 20:15  [ТС] 3
Цитата Сообщение от gunslinger Посмотреть сообщение
то тут стоит задуматься. Очень серьезно
Это не значит, что я вообще ни чего не знаю, просто с шифрованием практически не сталкивался)))
0
случайный прохожий
3071 / 2107 / 630
Регистрация: 20.07.2013
Сообщений: 5,657
17.04.2015, 23:08 4
Не в шифровании дело. Понимать, КАК это работает, при знании языка, не зависит от того, сортируем ли мы массив или ищем строку в тексте.
А вот знать, ПОЧЕМУ это работает, скорее область математики. И тут разбираться в общем случае не нужно. Взять формулу с той же википедии и вперед кодить. Доказательство теорем и вывод формул для программиста вторичная задача, если задача (читай, работодатель) того не требует.
P.S.: в последнее время стал много придираться. UI меня поймет. Разжевывать мало кому нравится, особенно если этой каши переел по самое не хочу.
0
Практикантроп
4840 / 2725 / 533
Регистрация: 23.09.2011
Сообщений: 5,795
18.04.2015, 01:23 5
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
AnsiString XOR_Crypt(AnsiString in, AnsiString pass)
// функция возвращает "обработанную" строку; параметрами её служат
// две строки: исходный текст и текст-маска
{
AnsiString out; // инициализируется возвращаемая строка;
        // по всей видимости - неправильно, может содержать мусор
        // особенно если вместо присваивания прибавляют: +=
        // Правильным будет  AnsiString out = "";
for (int x=1;x<in.Length()+1;x++) // здесь цикл от первого до последнего символа входной строки
        {
        out += (char)(in[x] ^ pass[x%pass.Length()+1]); // здесь формируется
      // возвращаемая строка путем посимвольной операции "исключающее ИЛИ" над
      // символами входной строки и маски; вот это - pass[x%pass.Length()+1]
      // нужно для случая, если строка маски короче исходной строки (ограничивается
      // номер текущего символа по модулю размера маски
        }
return out; // возвращается полученная строка
}
1
BRcr
20.04.2015, 22:16     Кодирование/Декодирование
  #6

Не по теме:

Цитата Сообщение от gunslinger Посмотреть сообщение
P.S.
Это в порядке вещей. Следующий этап - осознание тщетности раздражения по данному вопросу. Мир не изменится по щелчку пальцев. :)

0
20.04.2015, 22:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2015, 22:16
Помогаю со студенческими работами здесь

Декодирование входящего звука!
Требуется преобразовать входящий сигнал состоящий из одной тональности в последовательность...

Indy декодирование html кода
Есть код: &amp;lt;!--LiveInternet counter--&amp;gt;&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;!-- ...

кодирование
надо написать курсовик в инете нечего не нашел только декодирование на вашем сайте собственно...

Кодирование
Как сделать кодирование в запросе к сайту cyb =...


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

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

Новые блоги и статьи
В чем отличие между INNER JOIN и OUTER JOIN
bytestream 22.01.2025
В современных базах данных информация часто распределена между множеством взаимосвязанных таблиц, что делает операции объединения JOIN неотъемлемой частью работы с SQL. Эти операции позволяют. . .
Как сделать первую букву заглавной в JavaScript
bytestream 22.01.2025
JavaScript предоставляет разработчикам множество инструментов для эффективной работы с текстовыми данными. Одной из часто встречающихся задач при обработке строк является преобразование первой буквы. . .
Что такое Big O нотация и алгоритмическая сложность
bytestream 22.01.2025
Введение в алгоритмическую сложность В мире разработки программного обеспечения эффективность алгоритмов играет crucial роль в создании качественных приложений. Алгоритмическая сложность. . .
Как решать конфликты объединения (merge) в Git
bytestream 22.01.2025
Что такое конфликты слияния Конфликты слияния в системе контроля версий Git возникают в ситуациях, когда две или более ветки разработки содержат несовместимые изменения в одних и тех же участках. . .
Как использовать регулярные выражения
bytestream 22.01.2025
Регулярные выражения представляют собой мощный инструмент для работы с текстовыми данными, который позволяет осуществлять поиск, проверку и манипуляцию строками на основе определенных шаблонов. Этот. . .
Как выйти из Vim
bytestream 22.01.2025
Vim (Vi IMproved) представляет собой один из самых влиятельных текстовых редакторов в истории компьютерной индустрии, эволюционировавший из своего предшественника Vi, созданного Биллом Джоем в 1976. . .
NoSQL базы данных: что это такое и какие существуют
bytestream 22.01.2025
В современную эпоху цифровой трансформации объемы данных растут экспоненциально, создавая новые вызовы для традиционных систем управления базами данных. NoSQL (Not Only SQL) представляет собой. . .
Обновление исследования от команды MCM (январь 2025 г.)
Programma_Boinc 22.01.2025
Обновление исследования от команды MCM (январь 2025 г. ) Мы продолжаем изучать молекулярные сигнатуры, связанные с раком легких, с текущим фокусом на GCM1, факторе транскрипции, участвующем в. . .
Как работать с Kafka в Go (Golang)
bytestream 22.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки событий и интеграции микросервисов. Эта система, изначально. . .
Как использовать RabbitMQ в Go (Golang)
bytestream 22.01.2025
RabbitMQ представляет собой надежный и широко используемый брокер сообщений, который играет ключевую роль в построении современных распределенных систем и микросервисной архитектуры. В основе работы. . .
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru