在我的RSA中,我使用以下代码来计算c ^ d%m。 但是,我不确定,这个包含双模式操作的版本如何在后台运行。
function [f] = rsa ( m, d, c )
f = 1;
for index = 1:d
f = f * mod(c , m );
f = mod( f, m);
end
还有另一种使用指数d的二元扩张的方法,其中指数由2 ^ n的和表示,这对我来说是已知的。
有人能帮帮我吗?感谢。
答案 0 :(得分:1)
如果你暂时忽略mod函数调用,循环的每次迭代都会简单地将f(从1开始)乘以c。
因此,在d次迭代之后,f将等于
1 * c * c * ... * c = c ^ d
然后你可以在最后应用模数运算来计算" c ^ d%m"。
但是,这样做很可能会溢出,所以代码会在每次迭代时计算模数以防止溢出。
总之,这段代码只是简单地计算了" c ^ d%m"。这种方法在实践中将太慢,因为在RSA中d往往是一个非常大的数字。