У меня проблемы с расшифровкой в моем коде, когда значения, которые я получаю от шифрования и расшифровки, не совпадают, а значение расшифровки всегда равно 1. Я прикрепил весь свой код и хотел бы получить некоторую помощь в том, почему это происходит как это меня немного ослепило.
К сожалению, я бы хотел избежать этого, но это для uni-проекта, в котором меня попросили не создавать его с нуля без использования библиотеки Java RSA.
Вы никогда не рассчитываете phi. Кроме того, использование лишних круглых скобок иногда очень сбивает с толку.




Линия
d = (BigInteger.valueOf(1).mod(phi).divide(e)); //check with nick
неверно, и я уверен, что Ник подтвердит. Вам необходимо вычислить модульный обратный e mod phi. В Java это доступно как BigInteger.modInverse(..), поэтому правильная строка будет
d = e.modInverse(phi);
@ Bretty135 и phi все еще не инициализирован (равен нулю) согласно коду)
@ Bretty135: Спасибо, что разместили полный код проблемы.
как правило, я бы не стал пытаться реализовать собственное шифрование, большинство языков программирования имеют библиотеки, которые вы можете использовать. Внедрение собственного требует проблем, когда речь идет о безопасности, совместимости, удобстве и т. д.