以编程方式从`p`和`q`(RSA)生成`d`

tek*_*agi 1 python encryption rsa public-key-encryption

我有两个号码p,和q.我知道我可以得到phi = (p-1)*(q-1)那个ed = 1 (mod phi)......但我不确定这是什么意思.

我写了一些Python:

p = NUM
q = NUM
e = NUM
phi = (p-1)*(q-1)
d = (1 % phi)/float(e)
Run Code Online (Sandbox Code Playgroud)

但我总是得到一个小数,并且d应该是一个整数.我究竟做错了什么?

编辑:我可能只是不了解RSA.现在,我正在看这个页面:http://www.di-mgt.com.au/rsa_alg.html

ken*_*ytm 5

你对数学的理解是错误的.等式

ED ≡1(MOD φ)

表示数字ed除以φ的余数等于1,即就Python而言,

>>> (e*d) % phi
1
Run Code Online (Sandbox Code Playgroud)

例如,如果φ =(7 - 1)(11 - 1)= 60,e = 17,那么如果我们选择d = 53,那么我们将得到

>>> e = 17
>>> d = 53
>>> phi = 60
>>> (e*d) % phi
1
Run Code Online (Sandbox Code Playgroud)

我们称de的模乘法逆.

为了从eφ生成d,通常使用扩展的欧几里德算法.请阅读http://en.wikipedia.org/wiki/Modular_multiplicative_inversehttps://stackoverflow.com/search?q=python+%22multiplicative+inverse%22&submit=search了解更多信息