![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как получить x?
я_только_учусь © (2010-07-30 11:05:00)есть формула a := ( (x * b) mod c ) xor d;
нам известны значения a, b, с и d - как исходя из этого создать формулу что бы узнавать значения x?
например:
255 = ( (x * 104084 ) mod 128079 ) xor 48413;
также я знаю что в данном случае x будет равен 31544. но значения могут меняться и нужно вывести формулу.
сразу хочу сказать что это не лабораторная работа или что то подобное.
просто встала задача по дешифровке некого блока данных, во всем остальном разобрался, а именно на этом :(
KilkennyCat (2010-07-30 22:55:00) [1]
> И что генератором случайных чисел выбирать что л
дык можно тогда сразу им и воспользоваться.
я_только_учусь (2010-07-30 16:41:00) [2]задача создания валидной пары EncKey DecKey решена при помощи алгоритма Евклида. всем спасибо за помощь. тему можно закрывать.
RWolf (2010-07-30 13:42:00) [3]
> есть формула a := ( (x * b) mod c ) xor d;
вот представьте: a=1, b=1, c=2, d=0
т.е. 1 = x mod 2;
это равенство справедливо для любого нечётного x; какое выбирать будем?
Anatoly Podgoretsky (2010-07-30 13:07:00) [4]> И. Павел (30.07.2010 12:15:10) [10]
Да какой смысл, когда будет получено гигантское количество цифр, из которых
можно получить результат. И что генератором случайных чисел выбирать что ли.
я_только_учусь (2010-07-30 12:58:00) [5]b c d - константы. задачи из найти x, в ходе дискуссии превратилась в задачу
как найти валидную пару EncKey с DecKey.
мысль с перебором любопытная. примерный диапазон можно узнать
e = c mod (d xor a). диапазон от e*2 до e div 2.
спасибо. буду пробовать.
И. Павел (2010-07-30 12:43:00) [6]> Если b, c и d - константы
Ну т.е. я имею ввиду, что если это не предыдующие символы в коде.
И. Павел (2010-07-30 12:42:00) [7]Если b, c и d - константы, то можно составить таблицу - какой DecKey какому x предположительно соответствует. (т.е. [4])
А иначе - перебирайте DecKey. Этот алгоритм для этого и сделан, чтобы оказалось слишком много вариантов для расшифровки. Ну или ищите слабое место метода (если его название вам известно).
я_только_учусь (2010-07-30 12:29:00) [8]> И. Павел © (30.07.10 12:24) [12]
юмор оценён, но можно ли по теме? спасибо
И. Павел (2010-07-30 12:24:00) [9]> [11] я_только_учусь (30.07.10 12:17)
Вас что, не снабдили всеми нужными инструкциями дешифровки в центре? Тогда глотайте капсулу с цианидом.
я_только_учусь (2010-07-30 12:17:00) [10]спасибо всем за ответы. я пришел в выводу что x это некий ключ дешифровки
переименуем x в DecKey. также я определил формулу шифрования данного блока и там присутствует некий ключ шифрования (как я понимаю), назовем его EncKey.в общем виде это теперь выглядит так:
Encrypt: (шифруется байт a)
b := ( (d xor a) * EncKey) mod c;
Decrypt:
a := ( (DecKey * b) mod c ) xor d;
осталось разобраться как можно найти валидную пару EncKey с DecKey. или возможно это модификация алгоритма шифрования RSA? как Вы считаете?
И. Павел (2010-07-30 12:15:00) [11]> Для указаной формулы это в первом приближение 2^64 для одного
> С
Может быть задача имеет физический смысл и у X есть своя ОДЗ и можно будет как-то сразу откинуть большую чась значений.
Anatoly Podgoretsky (2010-07-30 12:06:00) [12]> И. Павел (30.07.2010 11:39:06) [6]
Для указаной формулы это в первом приближение 2^64 для одного С
Sha (2010-07-30 11:41:00) [13][4] - это общий ответ.
Чтобы разобраться в твоем случае,
для начала надо знать, как объявлены переменные.
И. Павел (2010-07-30 11:40:00) [14]> все эти варианты
В виде формулы. А так их бесконечно много.
И. Павел (2010-07-30 11:39:00) [15]Когда выполняется операция (x * b) mod c мы теряем информацию от целой части. Тоесть для разных x*b операция mod может дать одинаковый результат. Можно получить все эти варианты, а потом выбрать нужный по каким-то критериям.
я_только_учусь (2010-07-30 11:34:00) [16]то есть оставить всякую надежду? x невозможно определять? :(
Sha (2010-07-30 11:32:00) [17]Проще всего составить таблицу значений функции,
потом инвертировать ее.
Dennis I. Komarov (2010-07-30 11:31:00) [18]
> я знаю что в данном случае x будет равен 31544
не только
Anatoly Podgoretsky (2010-07-30 11:26:00) [19]Удалено модератором
Palladin (2010-07-30 11:16:00) [20]для mod нет обратной операции