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
你对数学的理解是错误的.等式
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)
我们称d为e的模乘法逆.
为了从e和φ生成d,通常使用扩展的欧几里德算法.请阅读http://en.wikipedia.org/wiki/Modular_multiplicative_inverse或https://stackoverflow.com/search?q=python+%22multiplicative+inverse%22&submit=search了解更多信息