我一直在研究如何使用扩展欧几里得算法来实现RSA加密,以找到私钥d。我读到的每篇文章都将人们引向Wikipedia's website on the topic。
这很不错,而且非常有帮助,除了以下几点:我不理解Wikipedia的伪代码在说什么。
我遇到以下问题:
“模块化整数”部分中的(t, newt) := (newt, t - quotient * newt)
。这是我的解释:
int tempT = newt;
newt = t - quotient * newt;
t = tempT;
它是否正确?感谢您的时间!
最佳答案
这是解释此伪代码的正确方法。这是将一个元组分配给另一个元组。每个元组的元素分别分配给它们的位置,并且值同时更改。
最好用一个例子来解释。
如果以t = 5,商= 4和newt = 6开头,那么(t, newt) := (newt, t - quotient * newt)
将执行以下操作:
t分配给newt的初始值(6)。然后分配newt,就像不只是重新分配了t一样。 newt变成5-4 * 6 = -19。最后t = 6和newt = -19(商不变)。
为了在Java中实现这一目标,必须将newt的原始值存储在一个临时变量(代码中的tempT)中。