如何处理扩展欧几里德算法的结果

时间:2014-01-07 19:34:29

标签: rsa public-key-encryption

我目前正在写一篇关于公钥加密的文章,特别是RSA。 我理解生成公钥和私钥所涉及的大多数算法。但是我很难理解我如何使用Bézout的身份获取私钥?而且我也不太明白为什么会使用Bézout的身份?

假设:

n=55
phi(n)=40    
e = 7

因此e * d mod phi(n)= 1

7*d mod 40 = 1
gcd(40,7) = 1

因此Bézout的身份看起来像这样:

3(40)-17(7)=1

其中40和7分别是phi(n)和e。

我从例子中知道d应该是23。 所以我说对了d = e - 17?

如果不是我怎么得到d?

1 个答案:

答案 0 :(得分:2)

在您的示例中,d = -17(因为Bézout的身份表明存在xy,因此x*a + y*b = gcd(a,b))。

您正在寻找d e*d = 1 mod phi(n),因此您可以将此负d转换为仍然满足等式的正值,只需添加{{1}的倍数即可}}。在这种情况下,我们只需添加一次phi(n),即可为phi(n)提供预期值:

d