Рейтинг:1

Завершение шифрования RSA

флаг bl

Будучи новичком в криптологии, я пытаюсь понять, как выполнить шифрование RSA вручную. Пока я могу только следовать формуле, прежде чем сильно запутаться.

Я хочу зашифровать значение "123"

Сначала я должен выбрать 2 простых числа. Я выбираю: $$p = 101\ д = 103$$

Далее я вычисляю: $$n = p\cdot q = 10403$$.

После этого я вычисляю: $$\varphi(n) = (p-1)\cdot(q-1) = 10200$$

Теперь я хочу выбрать публичный показатель, и я выбираю для этого 3.

Я считаю, что формула для использования: $$d = e^{â1}\bmod\varphi(n)$$

Я не понимаю, как подключить эту формулу, и не знаю, как зашифровать «123», используя эту формулу. Кроме того, я не знаю, как найти показатель степени расшифровки.

Любая помощь приветствуется!

dave_thompson_085 avatar
флаг cn
e (а ​​также d, но вы этого не выбираете) должны быть взаимно просты с p-1 и q-1. Ваш q-1 равен 102, а 3 не является взаимно простым с 102. Если вам нужна реальная безопасность, которая невозможна с такой крошечной игрушкой, как этот, выбор p и q рядом или близко неверен. d может быть вычислено как e обратное по модулю _либо_ фи(n) (Эйлер) _или_ лямбда(n) (Кармайкл). Все вышеперечисленное описано в википедии и во многих-многих существующих вопросах.
fgrieu avatar
флаг ng
Как сказано выше, ваш выбор $e$ несовместим с вашим выбором $q$. Для вычисления $d$ см. (полу-)[расширенный алгоритм Евклида](https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm#Computing_multiplicative_inverses_in_modular_structures) или [это](https://crypto.stackexchange.com /q/5889/555). Учебное шифрование RSA выполняется за $m\to c=m^e\bmod n$. Расшифровка по $c\to m=c^d\bmod n$. Эти вычисления представляют собой [модульное возведение в степень] (https://en.wikipedia.org/wiki/Modular_exponentiation).
jjj avatar
флаг cn
jjj
На практике p и q не должны быть слишком близкими, потому что это упрощает факторизацию n. (Просто говорю, потому что вы выбираете p и q близко друг к другу)
Рейтинг:1
флаг in

Фгрие, по сути, дал ответ в комментарии, я попытаюсь немного уточнить в форме ответа.

Вы можете использовать расширенный алгоритм Евклида, чтобы найти d из e, но обратите внимание, что выбранное вами e не будет работать. Поскольку e не взаимно просто с $\varphi(n)$ Вам нужно выбрать другой. Для эффективности нам обычно нравится выбирать маленькую букву e с несколькими установленными битами, обычно в форме $2^k+1$ поскольку 3 не работает, вы можете попробовать другие. https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm Вот онлайн-калькулятор: https://planetcalc.com/3298/

Это не только даст вам gcd (который должен быть равен 1), но также даст вам a, b, так что: $a*e + b*\varphi(n) = 1$ что по сути означает $a*e = 1 мод \varphi(n)$ что мы и хотели.

Затем вы шифруете, вычисляя $c = m^e\space mod(n)$ и расшифровать с помощью $ м = c ^ d \ пространство мод (п) $ Оба сделаны через https://en.wikipedia.org/wiki/Modular_exponentiation

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.