этот код предназначен просто для создания пары открытого и закрытого ключей (и использования ее для одного символа), но если я использую простые числа больше 1500, то создание этих ключей и шифрование / дешифрование занимает много времени. один символ.
мой код:
from math import gcd
import random
prime_numbers=[1223, 1033]
def phi_function(x):
x=(p-1)*(q-1)
return(x)
def is_coprime(x, y):
z=gcd(x, y)
if z==1:
return True
if z!=1:
return False
def encryption_key_generator(x, y):
list_p=[]
for i in range(1, x):
i2 = i+1
if is_coprime(i2, y)==True:
if is_coprime(i2, phi)==True:
list_p.append(i+1)
z=(list_p[len(list_p)-(random.randint(1, len(list_p)))], y)
return z
def decryption_key_generator(x, y, z):
list_p=[]
for i in range(z):
i2=i+1
if (x*i2)%y == 1:
list_p.append(i2)
q=(list_p[len(list_p)-1], z)
return (q)
p=prime_numbers[0]
q=prime_numbers[1]
n=p*q
phi=phi_function(n)
encryption_key=encryption_key_generator(phi, n)
decryption_key=decryption_key_generator(encryption_key[0], phi, n)
#print('encryption_key = '+str(encryption_key))
#print('decryption_key = '+str(decryption_key))
x=input('text: ')
x1=ord(x)
y=(x1**(encryption_key[0]))%(encryption_key[1])
y=chr(y)
y1=ord(y)
z=(y1**(decryption_key[0]))%(decryption_key[1])
print(chr(z))
У меня вопрос: есть ли какие-либо методы или встроенные функции, которые я могу использовать здесь, чтобы он работал быстрее?
(если это имеет какое-то значение для решения, оно будет использоваться для приложения для безопасного обмена сообщениями, я нахожусь в процессе создания)