无法解释伪代码行(RSA 乘法逆)
Can't Interpret Line of Pseudocode (RSA multiplicative inverse)
我一直在研究如何使用扩展欧几里德算法实现 RSA 加密以找到私钥 d。我读到的每篇文章都会将人们引向 Wikipedia's website on the topic.
这很棒,而且非常有用,除了一件事:我无法理解维基百科的伪代码在说什么。
我遇到以下行的问题:
(t, newt) := (newt, t - quotient * newt)
在 "Modular integers" 部分。这是我的解释:
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.In 结束,t=6 和 newt=-19(并且商不变)。
为了在 java 中实现这一点,必须将 newt 的原始值存储在临时变量(代码中的 tempT)中。
我一直在研究如何使用扩展欧几里德算法实现 RSA 加密以找到私钥 d。我读到的每篇文章都会将人们引向 Wikipedia's website on the topic.
这很棒,而且非常有用,除了一件事:我无法理解维基百科的伪代码在说什么。
我遇到以下行的问题:
(t, newt) := (newt, t - quotient * newt)
在 "Modular integers" 部分。这是我的解释:
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.In 结束,t=6 和 newt=-19(并且商不变)。
为了在 java 中实现这一点,必须将 newt 的原始值存储在临时变量(代码中的 tempT)中。