Форум программистов, компьютерный форум, киберфорум
Криптография
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,937

Обратная функция

13.07.2020, 19:15. Показов 688. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, уважаемы форумчане! Исследую одну древнюю программулину и наткнулся на такой алгоритм расшифровки. Может кто-нибудь подсказать как для этого алгоритма получить обратный, то есть алгоритм шифрования? А то я совсем слаб в крипте( Посоветовали еще написать в раздел криптографии.
Assembler Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
.model small
.data
buf db 200h dup(?)
.stack 256
.code
.386
start:
    mov ax,@data    ;Настраиваем сегментные регистры
    mov ds,ax
                 mov     dx, 5678h
                 mov     cx, 100h 
                 mov     si, offset buf + 1FEh
 loc_1A0:                         
                 mov     ax, [si] 
                 rol     ax, 5    
                 xor     ax, cx   
                 add     ax, cx   
                 xor     ax, dx   
                 add     dx, ax   
                 rol     dx, cl   
                 mov     [si], ax 
                 sub     si, 2    
                 loop    loc_1A0
 
                 mov     dx, 1234h
                 mov     cx, 100h 
                 mov     si, offset buf
                                  
 loc_1BF:                         
                 mov     ax, [si] 
                 rol     ax, 5    
                 xor     ax, cx   
                 add     ax, cx   
                 xor     ax, dx   
                 add     dx, ax   
                 rol     dx, cl   
                 mov     [si], ax 
                 add     si, 2    
                 loop    loc_1BF  
    mov ax,4c00h    
    int 21h
 
end start
Приношу извинения, что в виде кода, как математически записать не знаю.
Формально задача решена брутфорсом. В четыре потока перебирает все комбинации в пределах часа, но если кто-то знает как это решать "красиво", имею ввиду получить алгоритм шифрования, подскажите)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.07.2020, 19:15
Ответы с готовыми решениями:

Функция, обратная факториалу для огромного числа
Помню в этом году на олимпиаде по программированию мне попалась такая задачка(не дословно): есть целое число k в строчной...

Обратная польская запись
если реализовывать ОПЗ на стеке функции (sin, cos, ln и т.п.) имеют какой приоритет по сравнению с остальными действиями? я предполагаю что...

Обратная Польская Нотация
помогите перевести в опн, реализация не нужна, просто описание самих действий на доступном языке. выражение такое: ((2+1)/1+(8*1-5)*6+3) ...

8
205 / 142 / 57
Регистрация: 25.12.2014
Сообщений: 447
14.07.2020, 18:47
Общий принцип такой. Чтобы получить из алгоритма расшифровки алгоритм шифрования, нужно записать команды преобразования в обратном порядке и каждую такую команду заменить на обратную. Здесь у нас 2 цикла: сначала loc_1A0:..., потом loc_1BF: . Переставляем их местами. В каждом цикле заменяем порядок перебора на обратный: вместо sub si, 2 будет add si, 2 и наоборот. И конечно начальное значение si нужно в обоих случаях заменить на конечное. Команды преобразования АХ в теле каждого цикла записываем в обратном порядке и заменяем на обратные. Вместо ADD будет SUB, ROL <->ROR. А вот XOR обратна сама себе, так что она так и останется.
0
Фрилансер
 Аватар для Black Fregat
3709 / 2082 / 567
Регистрация: 31.05.2009
Сообщений: 6,683
14.07.2020, 19:03
Я так понимаю, брут в том и состоит, чтобы подобрать, какими будут CX и DX в конце раунда.
Способов ускорить не вижу пока, связка xor + add всё портит

Добавлено через 1 минуту
Хотя..
0
205 / 142 / 57
Регистрация: 25.12.2014
Сообщений: 447
14.07.2020, 19:49
Black Fregat, верно. Вернее, верно насчет DX. Значение СХ задается константой, уменьшается на 1 командой LOOP и нигде больше не меняется, тут никаких сложностей. А вот "xor ax, dx / add dx, ax" меняет DX при помощи АХ. Вот это основная трудность.
0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,937
14.07.2020, 20:04  [ТС]
Я так все и сделал, подбирал значения в концах раундов при помощи обратных операций, все работает. Но цитата из Википедии вселила в меня надежду, что есть более простой способ: "К достоинствам блочных шифров относят сходство процедур шифрования и расшифрования, которые, как правило, отличаются лишь порядком действий. Это упрощает создание устройств шифрования, так как позволяет использовать одни и те же блоки в цепях шифрования и расшифрования." Ведь в том же AES/DES есть четкий алгоритм как шифрования, так и расшифрования, вот и подумал, может найдется светлая голова, которая додумается как из алгоритма расшифровки получить алгоритм шифрования)
0
205 / 142 / 57
Регистрация: 25.12.2014
Сообщений: 447
14.07.2020, 20:33
alexcoder, Но подобрать нужно только значение DX для 1-го и для 2-го раунда? Или что-то еще подбирали?
0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,937
14.07.2020, 20:35  [ТС]
TrueTerm, Да, только их, подбирал пока после шифрования-дешифрования не получится исходный блок данных.
0
205 / 142 / 57
Регистрация: 25.12.2014
Сообщений: 447
14.07.2020, 22:35
alexcoder, А константы 5678h и 1234h всегда одинаковы или это часть ключа?
0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,937
15.07.2020, 09:04  [ТС]
TrueTerm, я думаю, это векторы инициализации.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.07.2020, 09:04
Помогаю со студенческими работами здесь

Обратная задача Джозефуса
можно ли зная номер выжившего человека, определить того с которого все начиналось?

Обратная польская запись
Можете подсказать алгоритм по переводу выражения из постфиксной нотации в инфиксную?

Обратная функция NZ
Есть ли обратная функция NZ. То есть при результате ноль в запросе выводить не ноль, а пустоту. Нужно просто для красоты, чтоб не было...

Обратная функция
Помогите пожалуйста, проблема в том что я не могу придумать обратную функцию, или найти аналог. function Send(id) { var req = new...

Обратная функция
Какая будет функция обратная y=2*x/1-sqr(x)?? Х=


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер