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);
}

0 ответов

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