当我试图运行我的代码时,他进入了无限循环,我不明白为什么
编辑: 在获得一些帮助之后,脚本似乎产生了很大的数字,并花费了大量时间进行数学运算。有没有办法加快速度?赋予它更多的计算能力或诸如此类的东西?
这是代码
def encrypt(m):
return pow(m, e) % n
def decrypt(c):
df = pow(c, modinv(e, (p-1)*(q-1))) % n
print(df)
return pow(c, modinv(e, (p-1)*(q-1))) % n
def egcd(a, b):
while a != 0:
g, y, x = egcd(b % a, a)
return (g, x - (b // a) * y, y)
return (b, 0, 1)
def modinv(a, m):
g, x, y = egcd(a, m)
if g == 1:
return x % m
def TestRSA(testnum):
c = encrypt(testnum)
if decrypt(c) == testnum:
score = 'good'
else:
score = 'bad'
return score
tnum = 123456
p = 17389
q = 22307
n = p * q
e = 65537
#d = modinv(e, (p-1)*(q-1))
print(TestRSA(tnum))
我不明白为什么会这样,以及错误是否在我的代码或syntex中。 请帮忙!!!
答案 0 :(得分:-1)
如果我添加一些打印件,我会看到:
pow(102070033,247312889)
,这是正常现象,需要时间!我不是python程序员,但是当我看的时候:
def modinv(a, m): g, x, y = egcd(a, m) if g == 1: return x % m
当g不为1时,返回值似乎丢失了,不是吗?