【问题标题】:GMP mpz_pow_ui with very large exponent具有非常大指数的 GMP mpz_pow_ui
【发布时间】:2016-03-07 14:51:43
【问题描述】:

我有很大的指数,其中指数

e = 26959946667150639794667015087019630673637144422540572481103610249951 

(225 位)

但是,根据mpz_pow_ui模板如下:

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

我认为 e 不适合那个函数,还有其他方法可以使用 GMP C++ 计算大指数吗?

【问题讨论】:

    标签: c++ gmp exponent


    【解决方案1】:

    不要。如果要取幂的基值不是-101,您将耗尽主内存(您将完全超出可用的虚拟地址空间)。如果目标是进行模幂运算(结果 可以 适合内存,因为它减少了一些适合 RAM 的数字),你想要mpz_powm(或者mpz_powm_sec,如果你正在写作“真正的”加密代码;_sec 变体可防御用于密钥恢复的定时攻击)。

    GMP 只接受该函数的无符号整数的原因是,在这种情况下,任意精度指数只会导致撕裂。

    【讨论】:

    • 哇.. 非常感谢@ShadowRanger.. 我不知道是否存在像 mpz_powm 这样的函数,之后我需要对值进行取模..
    • @stranger:我想通了。没有人将这么大的指数用于任何其他目的。 :-)
    猜你喜欢
    • 1970-01-01
    • 2018-02-21
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2018-08-14
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多