我正在编写脚本来为我提供 RSA 公钥和私钥。我正在尝试计算“e”和“d”的值,其中 ed = 1mod64。我知道这些值将是 e=5 和 d=13。我有两个最多 64 个素数列表,我想将这些列表相乘以计算“e”和“d”。我确信它会涉及一个 while 循环,以便在值不是 65 时继续进行。然而,我正在努力编写这段代码,因为我不确定如何让列表不并行计算。如果有人问到这个问题,我深表歉意,但我已经在原地打转了很长一段时间,如果有人问过这个问题,请只发布链接,我将删除这个问题。
请您参考如下方法:
我是 itertools 模块的粉丝,所以这里有一个使用它的例子。
python :
import itertools
primes = [2, 3, 5, 7]
for p, q in itertools.combinations(primes,2):
print ((p,q))
输出是:
(2, 3)
(2, 5)
(2, 7)
(3, 5)
(3, 7)
(5, 7)
python :
primes = [2, 3, 5, 7, 11, 13, 17, 19]
for e, d in itertools.combinations(primes,2):
if (e*d) % 64 == 1:
print ((e,d))
输出:
(5,13)
请注意,一般来说,这是一种非常低效的求模逆算法。对于任何大于玩具大小的参数,您应该改用扩展欧几里德算法的某个版本。
