import random from math import gcd as bltin_gcd def isPrime(x): pr = True for j in range(2, x): if x % j == 0: pr = False return pr def remove_char(input_string, index): first_part = input_string[:index] second_part - input_string[index+1:] return first_part + second_part def coprime(a, b): return bltin_gcd(a, b) == 1 primes = [i for i in range(2,1000) if isPrime(i)] p = random.choice(primes) q = random.choice(primes) n = p * q coprimes = [j for j in range(2,n) if coprime(j, ((p-1)*(q-1)))] e = random.choice(coprimes) string = input() sepChars = list(string) numChars = 0 for c in sepChars: numChars += ((128**sepChars.index(c))*ord(c)) print("numChars:",numChars) c = 0 blocks = [] while numChars > 0: blocks.append(numChars%n) numChars = (numChars-numChars%n)/n print("Blocks:",blocks) encryptedBlocks = [] for b in blocks: encryptedBlocks.append((b**e)%n) print("Encrypted:",encryptedBlocks)