【发布时间】:2019-03-03 13:29:00
【问题描述】:
作为 Diffie Hellman 算法的一部分,我正在尝试检查一个数字是否为素数,如果它不是素数,请再次要求用户在不退出程序的情况下输入另一个数字。
这是我的代码:
def prime(p):
for i in range(2,p):
if (p % i) == 0:
return(False)
break
else:
return(True)
def primRoots(p):
roots = []
required_set = set(num for num in range (1, p))
for g in range(1, p):
actual_set = set(pow(g, powers) % p for powers in range (1, p))
if required_set == actual_set:
roots.append(g)
return roots
p=int(input("enter any prime no:"))
check=prime(p)
if(check==True):
primitive_roots = primRoots(p)
g=primitive_roots[0]
print(g)
x=int(input("Alice chooses value of X as:"))
y=int(input("Bob chooses value of y as:"))
r1=(g**x) % p
r2=(g**y) % p
print("value of r1 is",r1)
print("value of r2 is",r2)
a=x*y
k1=(r2**x) % p
print("k1 is",k1)
k2=(r1**y)% p
print("k2 is",k2)
k=(g**a)%p
print("shared key is",k)
else:
print("It is not a prime num,enter again")
prime(p)
【问题讨论】:
-
谢谢!但是如果它不是质数,则此代码不会要求用户输入另一个数字。
-
您的问题是什么?我的意思是,你的代码做了什么你没想到的?
标签: python primes diffie-hellman