Привет, Я пытаюсь создать рабочую программу RSA, но на очень маленьком уровне у меня возникают проблемы с шифрованием и расшифровкой с помощью этого кода, может кто-нибудь поможет мне разобраться, что не так? Я пробовал делать это по-разному, но, похоже, это правильная математика, поэтому я считаю, что это может быть просто недостаток навыков кодирования? БлагодаряПростой код RSA
import random, math
def RandomPrime():
prime = False
while prime == False:
n = 2
while n % 2 == 0:
n = random.randint(10000, 100000)
s = math.trunc(n**0.5)
s = int(s)
x = 3
# While n doesn't exactly divide to equal 0, and x is less then the sqrt of n
while (n % x != 0) and (x <= s):
x = x + 2
# if n is greater than s, it means it has run out of numbers to test, so is prime
if x > s:
prime = True
return n
def Modulus(p, q):
M = p * q
return M
def Totient(p, q):
T = ((p-1) * (q-1))
return T
def Pubkey(T):
prime = False
while prime == False:
n = 2
while n % 2 == 0:
n = random.randint(3, T)
s = math.trunc(n**0.5)
s = int(s)
x = 3
# While
while (n % x != 0) and (x <= s):
x = x + 2
if x > s:
prime = True
return n
def privkey(T, n):
y = math.fmod(1, T)
d = float((y/n))
return d
# z is my encyption in this scenario
z = 8
# I generate p and q, using my random prime generator, i used low primes in
# this example just to see if it would work but it is still not showing reults
p = RandomPrime()
q = RandomPrime()
print(p, q)
#This creates the modulus
M = Modulus(p, q)
print(M)
# Eulier's totient
T = Totient(p, q)
print(T)
#Pub key creation
n = Pubkey(T)
print(n)
#Priv key creation
d = privkey(n, T)
print(d)
enc = (pow(z, n)) % M
print('enc: ', enc)
dec = (pow(enc, d)) % M
print('dec: ', dec)
вы пропустили сказать нам, какой язык программирования вы используете. Измените свой вопрос и добавьте его как минимум в качестве тега. – Robert
его python, извините mate – user3181295
Какая у вас ошибка? И можете ли вы вычислить (pow (z, n))? это должно быть огромное число для произвольного n. – alko