一尘不染

大数模量

algorithm

我正在尝试实现SAFER +算法。该算法要求找到幂函数的模数,如下所示:

pow(45, x) mod 257

变量x是一个字节,因此范围为0到255。因此,如果使用32位或64位整数实现,则幂函数的结果可能会非常大,从而导致错误的值。

如何执行此计算?


阅读 176

收藏
2020-07-28

共1个答案

一尘不染

一些伪代码

function powermod(base, exponent, modulus) {
    if (base < 1 || exponent < 0 || modulus < 1)
        return -1

    result = 1;
    while (exponent > 0) {
       if ((exponent % 2) == 1) {
           result = (result * base) % modulus;
       }
       base = (base * base) % modulus;
       exponent = floor(exponent / 2);
    }
    return result;
}

并打电话

powermod(45, x, 257)
2020-07-28