Я программирую прототип расшифровки RSA в Java. Это просто для того, чтобы показать, как это работает для школы, поэтому я стараюсь сделать это как можно проще. Но когда я добираюсь до части расшифровки, я должен использовать формулу:
c = m ^ e% n.
В целях тестирования я пытался сделать это с m = "1010" (потому что я получаю его как строку из моей программы), e = 55 , n = 361 . Это должно дать мне 345 как с (проверено в калькуляторе Windows). Результаты, которые я получаю:
Math.pow(Integer.parseInt("1010"), 55) % 361 // 115.0
BigDecimal b = BigDecimal.valueOf(Math.pow(Integer.parseInt("1010"),55));
(b.remainder(BigDecimal.valueOf(361))).doubleValue() // 300.0
Math.pow(Integer.parseInt("1010"), 55) % 361 // 340
Пожалуйста, скажите мне, где я не прав или как я могу это исправить. Заранее спасибо.