![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
drhluse |
|
|||
Новичок Профиль Группа: Участник Сообщений: 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[] ? ![]() Значения 32х разрядные. Область применения - криптография. Это сообщение отредактировал(а) drhluse - 20.7.2011, 17:16 |
|||
|
||||
ФедосеевПавел |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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]. Далее рассматриваем уравнения с этими тремя аргументами и перебирая варианты для недостающих разрядов вычисляем следующий до тех пор, пока не встретим потиворечие с "уже найденным" решением или вариант подтвердится. Вот, примерно, так... Но я не до конца уверен в правильности данного подхода. |
|||
|
||||
drhluse |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 20.7.2011 Репутация: нет Всего: нет |
С перебором 2х 32х-разрядных значений будет накладно по ресурсам... ![]() Формула должна существовать, т.е. существует однозначная зависимость Y от Х. Как вариант, у меня есть мысль сделать базу данных для КАЖДОГО уравнения на 4 294 967 295 записей. X = номер записи, Y = значение записи, и "получать решение" с помощью запросов базы данных, построив индекс по Y ![]() Пока не решил какая СУБД будет... размер базы минимально составит 16 гиг на одно уравнение, но как вариант... ! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |