2015-05-10 2 views
1

Предположим, что я знаю java BigIntegers c, e и n, есть способ быстро вычислить BigInteger m, где :Как найти m в c = m^e (mod n), если известны c, e, n

c = m^e (mod n) 
+0

Что вы изучили до сих пор? –

+3

Эта проблема действительно не специфична для Java ... это проблема теории чисел, никакой конкретный язык программирования не сможет быстро расшифровывать RSA без секретного ключа ... – hft

ответ

2

Ну, вроде ... Предположим, что вы определили число «d», что

d*e=1 (mod phi(n)) 

Где фита (п) является размер множества относительно простых чисел относительных к n. Например, если n = pq, где p и q простые, то phi (n) = (p-1) * (q-1).

Тогда

m=c^d (mod n) 

В том случае, когда вы уже не знаете, «D», то я думаю, что это будет довольно трудно для вас, чтобы инвертировать эту функцию в целом. Удачи.

+0

Спасибо. Я думал, что мне нужно решить это уравнение, чтобы решить проблему, которую я пытаюсь взломать, но кажется, что есть другой способ получить решение (поскольку я не знаю значения для «d», решение этого было бы очень сложно). – knarloc

+0

Вас попросят разбить шифрование RSA на 2048 бит. – hft

+0

«2048» в моем комментарии - это «n = 2048» в вашем предыдущем комментарии, который, кажется, был удален ... В любом случае, как правило, это шифрование сложно разбить. – hft

Смежные вопросы