RSA分解,解释c ^ d%n

时间:2013-12-01 20:00:31

标签: algorithm rsa modulo

在我的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的和表示,这对我来说是已知的。

有人能帮帮我吗?感谢。

1 个答案:

答案 0 :(得分:1)

如果你暂时忽略mod函数调用,循环的每次迭代都会简单地将f(从1开始)乘以c。

因此,在d次迭代之后,f将等于

1 * c * c * ... * c = c ^ d

然后你可以在最后应用模数运算来计算" c ^ d%m"。

但是,这样做很可能会溢出,所以代码会在每次迭代时计算模数以防止溢出。

总之,这段代码只是简单地计算了" c ^ d%m"。这种方法在实践中将太慢,因为在RSA中d往往是一个非常大的数字。