|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.11.2020, 15:19 | #1 |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
Кодирование открытого текста
Подскажите пожалуйста как происходит подобное шифрование? Как в данном коде работает исключающее (или) ch1 ИЛИ key? Как происходит преобразование и как получается такой результат защифрованоого сообщения?
Код:
Исходное сообщение: Hi! Зашифрованное сообщение: □1y Расшифрованное сообщение: Hi! Спасибо за помощь! |
15.11.2020, 15:37 | #2 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,620
|
Очень просто: ИСКЛЮЧАЮЩЕЕ ИЛИ в раскодируемом байте меняет 0 на 1 (и наоборот) в тех битах, в которых в ключе key единица, в остальных оставляется без изменения.
00100111 - раскодируемое 01000010 - ключ 01100000 - результат. |
15.11.2020, 21:06 | #3 | |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
Цитата:
Насчет исключающего ИЛИ я разобрался. Вопрос в другом. Я не могу понять как происходит само шифрование. ch1 = (char) (ch1 ^ key); как происходит процесс. Я так понимаю что у каждого символа типа char есть свой двоичный код? То есть char (H) 01001000 ^ int (88) 01011000 примерно так? Последний раз редактировалось bITA666; 15.11.2020 в 21:16. |
|
15.11.2020, 21:29 | #4 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
digitalis, xor не так работает. Если в кодируемом байте и ключе рассматриваемый бит одинаковый, то результат 0, если разный - единица.
bITA666, код символа соответствует ASCII.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
15.11.2020, 21:45 | #5 | |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
Цитата:
|
|
15.11.2020, 21:57 | #6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
bITA666, в принципе правильно, если не затрагивать вопрос приведения типов.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
15.11.2020, 22:41 | #7 |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
Я так понимаю что после операции поразрядного оператора исключающего ИЛИ (H) 01001000 ^ int (88) 01011000 следует приведение в тип char, и результатом следует двоичный код типа char?
Последний раз редактировалось bITA666; 15.11.2020 в 22:45. |
15.11.2020, 22:44 | #8 | |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,620
|
Цитата:
0 0 -> 0 оставляет 0 1 -> 1 инвертирует 1 0 -> 1 оставляет 1 1 -> 0 инвертирует Красный - ключ. Впрочем, может быть и наоборот. bITA666 Последний раз редактировалось digitalis; 15.11.2020 в 23:01. |
|
15.11.2020, 22:59 | #9 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,342
|
Да, действительно одно и то же, был неправ. Не сталкивался с таким интерпретированием XOR.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
15.11.2020, 23:06 | #10 |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
Ну а по сути я првильно понял из моего вопроса к вам? что после операции поразрядного оператора исключающего ИЛИ (H) 01001000 ^ int (88) 01011000 следует приведение в тип char, и результатом следует двоичный код типа char?
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача про кодирование текста | захаров | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 05.11.2018 12:57 |
Задача про кодирование текста (не получается реализовать из-за буквы ё в ascii) | jihot | Паскаль, Turbo Pascal, PascalABC.NET | 9 | 29.12.2013 09:41 |
Проблема с получением текста HTML из уже открытого окна IE | Zamozhskiy | Общие вопросы .NET | 2 | 23.09.2011 18:20 |
Кодирование текста | Crunkordie | Общие вопросы Delphi | 24 | 12.05.2011 13:38 |