Я хочу реализовать криптосистему RSA на C. Прямо сейчас я могу шифровать значения, которые умещаются в один байт (который, как я знаю, слишком мал для любой безопасности), но когда я увеличиваю размер простых чисел p и q (и, следовательно, модуля n = pq), и размера зашифрованных значений, это не работает.
Я считаю, что знаю причины, по которым мой код не работает:
- шифруемое значение должно быть меньше значения n (что не всегда так), и
- значение n = pq, которое я вычисляю, неверно, потому что реальное значение не может быть сохранено в типе переменной, который я использую, и вместо этого происходит переполнение.
Мой вопрос в том, как я могу использовать большие числа (упаковывать в 256 байтов, 512 байтов и т. д.) и манипулировать ими в C? Должен ли я использовать библиотеки (например, GMP)?