Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Алгоритм] Булева алгебра - решение уравнения, Решение уравнения со сдвигом 
:(
    Опции темы
drhluse
  Дата 20.7.2011, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 20.7.2011

Репутация: нет
Всего: нет



Раздел - булева алгебра. Есть уравнения вида:

Y = ROTR(X, 6) ^ ROTR(X, 11) ^ ROTR(X, 25), эквивалентная запись: Y = (X rotr 6) xor (X rotr 11) xor (X rotr 25)

и

Y = ROTR(X, 7) ^ ROTR(X, 18) ^ SHR(X, 3), эквивалентная запись: Y = (X rotr 7) xor (X rotr 18) xor (X shr 3)

Не система, просто разные уравнения. ROTR - циклический сдвиг вправо, SHR - сдвиг вправо с потерей разрядов.

Как, зная Y найти X или множество X[] ? smile 

Значения 32х разрядные.

Область применения - криптография.

Это сообщение отредактировал(а) drhluse - 20.7.2011, 17:16
PM MAIL   Вверх
ФедосеевПавел
Дата 20.7.2011, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 7.2.2009

Репутация: 2
Всего: 10



Могу предположить, что уравнения решаются перебором - аналогично ребусам типа "SEND+MORE=MONEY".

Например, для первого уравнения:
получаем систему из 32 уравнений побитовых операций
y[sub]0[/sub]=x[sub]6[/sub]^x[sub]11[/sub]^x[sub]25[/sub]
y[sub]1[/sub]=x[sub]7[/sub]^x[sub]12[/sub]^x[sub]26[/sub]
...............
y[sub]31[sub]=x[sub]5[/sub]^x[sub]10[/sub]^x[sub]24[/sub]

Перебирая два первых аргумента x[sub]6[/sub] и x[sub]11[/sub] вычисляем третий x[sub]25[/sub].
Далее рассматриваем уравнения с этими тремя аргументами и перебирая варианты для недостающих разрядов вычисляем следующий до тех пор, пока не встретим потиворечие с "уже найденным" решением или вариант подтвердится.

Вот, примерно, так...

Но я не до конца уверен в правильности данного подхода.
PM   Вверх
drhluse
  Дата 22.7.2011, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 20.7.2011

Репутация: нет
Всего: нет



Цитата(ФедосеевПавел @ 20.7.2011,  22:11)
Перебирая два первых аргумента ...

Но я не до конца уверен в правильности данного подхода.

С перебором 2х 32х-разрядных значений будет накладно по ресурсам... smile 

Формула должна существовать, т.е. существует однозначная зависимость Y от Х.

Как вариант, у меня есть мысль сделать базу данных для КАЖДОГО уравнения на 4 294 967 295 записей.
X = номер записи, Y = значение записи, и "получать решение" с помощью запросов базы данных, построив индекс по Y  smile 

Пока не решил какая СУБД будет... размер базы минимально составит 16 гиг на одно уравнение, но как вариант... !

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1059 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.