![]() |
eXeL@B —› Вопросы новичков —› не хватает логики понять простенький алгоритм. может кто подскажет. |
Посл.ответ | Сообщение |
|
Создано: 13 апреля 2018 23:27 · Поправил: carver · Личное сообщение · #1 вот, попытался обобщить, скриптом: Code:
на вxоде: 0x12345678 на выxоде: 0x65985210 что-то не могу сообразить, как мне развернуть алгоритм, что-бы с 0x65985210 получить входные 0x12345678 ? заранее благодарен. ![]() |
|
Создано: 14 апреля 2018 00:43 · Поправил: dosprog · Личное сообщение · #2 |
|
Создано: 14 апреля 2018 09:15 · Личное сообщение · #3 |
|
Создано: 14 апреля 2018 09:22 · Поправил: kunix · Личное сообщение · #4 carver, там точно if($i%2==1)? Ибо вообще это похоже на вычисление $in^$d (mod 0xE01E9C71) по алгоритму быстрого возведение в степень. Тогда вместо $i должен быть $i-ый старший бит числа $d. dosprog, ну почему же... Это херня вычисляет $in^85 (mod 0xE01E9C71). Задача обратить это все, то есть вычислить корень, и она вполне решаема. 0xE01E9C71 = 3760102513 = 49307 * 76259. У нас тут говно-RSA, короче. Делать нефиг решать. M = 3760102513; P = 49307; Q = 76259; F = (P - 1)*(Q - 1); expPub = 85; expPriv = PowerMod[expPub, -1, F]; // = 3229156673 Короче, $out = $in^85 (mod 0xE01E9C71) $in = $out^3229156673 (mod 0xE01E9C71) Но если не получилось факторизовать 0xE01E9C71, то тут сразу все радикально усложняется. ![]() |
|
Создано: 14 апреля 2018 09:46 · Поправил: carver · Личное сообщение · #5 |
|
Создано: 18 апреля 2018 10:51 · Личное сообщение · #6 |
|
Создано: 18 апреля 2018 22:21 · Личное сообщение · #7 |
![]() |
eXeL@B —› Вопросы новичков —› не хватает логики понять простенький алгоритм. может кто подскажет. |