RSA-шифрование в C++. Возникла проблема с операцией возврата модуля
Я пытаюсь создать простую программу шифрования / дешифрования RSA на C++, которая работает только с целыми числами в качестве зашифрованного "текста".
Мой метод "шифрования" выглядит так:
long int encryptedText = (long)fmod(pow(toBeEncrypted, pubE), pubN);
С примером ввода 15 для toBeEncrypted, 5 для pubE и 2117 для pubN он выдает мне 1489, что математически правильно.
Проблема в том, что когда я пытаюсь расшифровать, мой вывод не правильный. Я изменяю модуль следующим образом:decryptedText = fmod(pow(fmod(toBeDecrypted, pubN), pubD), pubN);
Когда у меня есть 1489 для toBeDecrypted, 1613 для pubD и 2117 для pubN, я получаю вывод -9223372036854775808 без других ошибок.
Я предполагаю, что моя проблема в том, что хранилище переполнено, но я не уверен, как справиться с этим, поскольку я уже использую длинные целые числа для сохранения своих значений.
Спасибо за любую помощь или понимание
ОБНОВИТЬ
Я разделил свой модуль дешифрования на множество меньших модулей, но у меня был тот же отрицательный результат
for (int i=0; i < pubD, i++;){
decryptedText *= fmod(pow(toBeDecrypted, 1), pubN);
}