GMP mpz_pow_ui с очень большим показателем

у меня очень большой показатель, где показатель

e = 26959946667150639794667015087019630673637144422540572481103610249951

(225 бит)

Но, согласно шаблону mpz_pow_ui следующим образом:

void mpz_pow_ui (mpz_t ROP, mpz_t BASE, unsigned long int EXP)

Я думаю, что e не подходит для этой функции, есть ли другой способ вычислить большую экспоненту с использованием GMP C ++?

0

Решение

Не. Если базовое значение возводится в степень, это не -1, 0, или же 1, вы уничтожите основную память (вы полностью превысите доступное виртуальное адресное пространство). Если цель состоит в том, чтобы сделать модульное возведение в степень (где результат Можно вписывается в память, потому что он уменьшен на некоторое число, которое умещается в оперативной памяти), вы хотите mpz_powm (или же mpz_powm_sec если вы пишете «настоящий» криптографический код; _sec вариант защищает от временных атак для восстановления ключа).

Причина, по которой GMP принимает только целое число без знака для этой функции, заключается в том, что показатели произвольной точности в этом случае приводят только к разрывам.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]