我正在尝试实现SAFER +算法。该算法要求找到幂函数的模数,如下所示:
pow(45, x) mod 257
变量x是一个字节,因此范围为0到255。因此,如果使用32位或64位整数实现,则幂函数的结果可能会非常大,从而导致错误的值。
如何执行此计算?
一些伪代码
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)