MCPcopy Index your code
hub / github.com/TheAlgorithms/Python / generate_key

Function generate_key

ciphers/rsa_key_generator.py:16–40  ·  view source on GitHub ↗

>>> random.seed(0) # for repeatability >>> public_key, private_key = generate_key(8) >>> public_key (26569, 239) >>> private_key (26569, 2855)

(key_size: int)

Source from the content-addressed store, hash-verified

14
15
16def generate_key(key_size: int) -> tuple[tuple[int, int], tuple[int, int]]:
17 """
18 >>> random.seed(0) # for repeatability
19 >>> public_key, private_key = generate_key(8)
20 >>> public_key
21 (26569, 239)
22 >>> private_key
23 (26569, 2855)
24 """
25 p = rabin_miller.generate_large_prime(key_size)
26 q = rabin_miller.generate_large_prime(key_size)
27 n = p * q
28
29 # Generate e that is relatively prime to (p - 1) * (q - 1)
30 while True:
31 e = random.randrange(2 ** (key_size - 1), 2 ** (key_size))
32 if gcd_by_iterative(e, (p - 1) * (q - 1)) == 1:
33 break
34
35 # Calculate d that is mod inverse of e
36 d = cryptomath_module.find_mod_inverse(e, (p - 1) * (q - 1))
37
38 public_key = (n, e)
39 private_key = (n, d)
40 return (public_key, private_key)
41
42
43def make_key_files(name: str, key_size: int) -> None:

Callers 1

make_key_filesFunction · 0.70

Calls 1

gcd_by_iterativeFunction · 0.90

Tested by

no test coverage detected