I am writing my script to provide me with an RSA public and private key. I am trying to calculate the values of 'e' and 'd' where ed = 1mod64. I know the values will be e=5 and d=13. I have two lists of prime numbers up to 64, I want to multiply these lists together to calculate 'e' and 'd'. I am sure it will involve a while loop so that, while the value is not 65 keep going. I am struggling to write this code however as I am not sure how to get the lists to calculate not in parallel. Apologies if this has been asked but I have been going round in circles for quite some time, if it has been asked please just post the link to it and I shall remove this question.
I'm a fan of the
itertools module, so here is an example using it.
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)
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))
Note that, in general, this is a terribly inefficient algorithm for finding modular inverses. You should instead use some version of the extended euclidean algorithm for anything larger than toy-sized parameters.