неэффективность создания открытых и закрытых ключей - PullRequest
0 голосов
/ 12 сентября 2018

этот код предназначен просто для создания пары открытого и закрытого ключей (и использования ее для одного символа), но если я использую простые числа больше 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))

У меня вопрос: есть ли какие-либо методы или встроенные функции, которые я могу использовать здесь, чтобы он работал быстрее? (если это имеет какое-то значение для решения, оно будет использоваться для приложения для безопасного обмена сообщениями, я нахожусь в процессе создания)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...