因此,對于DHKE,我需要生成一個大的素數g(在本例中為>500位),然后計算N = 2g + 1,然后測試N是否是素數。重復該過程,直到找到這樣的N。為了實現這一點,我生成一個隨機數g,在其上運行費馬測試,然后在N上運行費馬測試。但是,我注意到運行時間非常慢(有時程序需要幾分鐘)以下是我在任意數字上實現的費馬檢驗:def fermatTest(p): for i in range(5): # probability of getting a fool: 1/32 a = secrets.randbelow(p) if gcd(p,a) == 1: if (pow(a,p-1,p) == 1): return True else: return False我注意到,要有一個好的費馬檢驗,我需要用多輪a來檢查p,這減少了得到費馬傻瓜的機會(復合表現得像素數),但也減慢了計算速度。我的問題是:有沒有辦法使此功能更快?還是有其他已知的算法比費馬更快?
1 回答

ABOUTYOU
TA貢獻1812條經驗 獲得超5個贊
你可以使用sympy庫,它有一個sympy.isprime()函數,它使用Fermat測試的更好實現(我可能是錯的,但想法幾乎是一樣的)。但是,現在我仍然不知道如何使總時間小于30秒(有時你很幸運,你可以在1秒內生成一個安全Prime,但其他時間它可以達到120秒)
添加回答
舉報
0/150
提交
取消