因此,對(duì)于DHKE,我需要生成一個(gè)大的素?cái)?shù)g(在本例中為>500位),然后計(jì)算N = 2g + 1,然后測(cè)試N是否是素?cái)?shù)。重復(fù)該過程,直到找到這樣的N。為了實(shí)現(xiàn)這一點(diǎn),我生成一個(gè)隨機(jī)數(shù)g,在其上運(yùn)行費(fèi)馬測(cè)試,然后在N上運(yùn)行費(fèi)馬測(cè)試。但是,我注意到運(yùn)行時(shí)間非常慢(有時(shí)程序需要幾分鐘)以下是我在任意數(shù)字上實(shí)現(xiàn)的費(fèi)馬檢驗(yà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我注意到,要有一個(gè)好的費(fèi)馬檢驗(yàn),我需要用多輪a來(lái)檢查p,這減少了得到費(fèi)馬傻瓜的機(jī)會(huì)(復(fù)合表現(xiàn)得像素?cái)?shù)),但也減慢了計(jì)算速度。我的問題是:有沒有辦法使此功能更快?還是有其他已知的算法比費(fèi)馬更快?
大素?cái)?shù)的費(fèi)馬素?cái)?shù)檢驗(yàn)優(yōu)化(DHKE 應(yīng)用)
30秒到達(dá)戰(zhàn)場(chǎng)
2022-08-25 13:37:35