Выполняю операцию, когда функция F(k,x)
принимает два 64-битных значения и возвращает произведение их десятичных чисел. Например:Можете ли вы получить исходное десятичное число из младших значащих бит другой операции?
F(123,231) = 123 x 231 = 28413
Затем число преобразуется в двоичный код и извлекаются младшие значащие биты. т.е. если 28413 = 0110111011111101
, то мы принимаем 11111101
, что равно 253
в десятичной системе.
Эта функция является частью сети Feistel в безопасности. При выполнении типа атаки (выбранного открытого текста) мы добираемся до точки, где у нас есть 253
и 231
, но нужно выяснить, 123
.
Есть ли способ, который возможен?
Ваши разъяснения понятны, пока вы не дойдете до части Фейстеля. Что значит «нужно выяснить» 123? Вы ищете входы в свою функцию? Вам нужно изменить свою функцию?(В этом случае, пожалуйста, предоставьте то, что у вас есть.) Будьте ясны о конкретной проблеме. –
@ NathanielFord 123 - это ключ в функции F, которая неизвестна. Входы 231 злоумышленника возвращаются 253. Он также знает, как работает F, т. Е. Вход 231 умножается на ключ, и LSB берутся из этого. Может ли он вывести ключ? Спасибо – elgreco007