Шифрование и дешифрование RSA Java

У меня проблемы с расшифровкой в ​​моем коде, когда значения, которые я получаю от шифрования и расшифровки, не совпадают, а значение расшифровки всегда равно 1. Я прикрепил весь свой код и хотел бы получить некоторую помощь в том, почему это происходит как это меня немного ослепило.

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

Loopo 17.04.2018 16:13

К сожалению, я бы хотел избежать этого, но это для uni-проекта, в котором меня попросили не создавать его с нуля без использования библиотеки Java RSA.

Bretty135 17.04.2018 16:16

Вы никогда не рассчитываете phi. Кроме того, использование лишних круглых скобок иногда очень сбивает с толку.

President James K. Polk 17.04.2018 16:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
87
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Линия

d = (BigInteger.valueOf(1).mod(phi).divide(e));  //check with nick

неверно, и я уверен, что Ник подтвердит. Вам необходимо вычислить модульный обратный e mod phi. В Java это доступно как BigInteger.modInverse(..), поэтому правильная строка будет

d = e.modInverse(phi);

@ Bretty135 и phi все еще не инициализирован (равен нулю) согласно коду)

gusto2 18.04.2018 10:29

@ Bretty135: Спасибо, что разместили полный код проблемы.

President James K. Polk 18.04.2018 13:35

Другие вопросы по теме