| 8 | print('Key files generation successful.') |
| 9 | |
| 10 | def generateKey(keySize): |
| 11 | print('Generating prime p...') |
| 12 | p = rabinMiller.generateLargePrime(keySize) |
| 13 | print('Generating prime q...') |
| 14 | q = rabinMiller.generateLargePrime(keySize) |
| 15 | n = p * q |
| 16 | |
| 17 | print('Generating e that is relatively prime to (p - 1) * (q - 1)...') |
| 18 | while True: |
| 19 | e = random.randrange(2 ** (keySize - 1), 2 ** (keySize)) |
| 20 | if cryptoMath.gcd(e, (p - 1) * (q - 1)) == 1: |
| 21 | break |
| 22 | |
| 23 | print('Calculating d that is mod inverse of e...') |
| 24 | d = cryptoMath.findModInverse(e, (p - 1) * (q - 1)) |
| 25 | |
| 26 | publicKey = (n, e) |
| 27 | privateKey = (n, d) |
| 28 | return (publicKey, privateKey) |
| 29 | |
| 30 | def makeKeyFiles(name, keySize): |
| 31 | if os.path.exists('%s_pubkey.txt' % (name)) or os.path.exists('%s_privkey.txt' % (name)): |