專利名稱:一種在嵌入式系統(tǒng)中生成大素數(shù)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及密碼學領(lǐng)域,特別涉及一種在嵌入式系統(tǒng)中生成大素數(shù)的方法。
背景技術(shù):
在密碼實現(xiàn)過程中,特別是公開密鑰密碼的實現(xiàn)過程中,需要嵌入式系統(tǒng)生成大素數(shù)供加密等過程使用,例如,RSA加密過程中的密鑰參數(shù)需要使用嵌入式系統(tǒng)生成的大素數(shù)。現(xiàn)有技術(shù)中,大素數(shù)的生成過程包括首先生成長度足夠的隨機數(shù);然后判斷該隨機數(shù)是否為素數(shù);當確定該隨機數(shù)不為素數(shù)時,則重新生成一組新隨機數(shù)或?qū)Ξ斍半S機數(shù)進行適度變換,然后再次判斷新隨機數(shù)是否為素數(shù),直到生成一個符合要求的隨機數(shù)。在上述生成大素數(shù)的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題在大素數(shù)產(chǎn)生的過程中,需要對很多隨機數(shù)進行素性檢測以判斷該隨機數(shù)是否為素數(shù),由于素性檢測需要用到很消耗時間的模冪運算,且素性檢測通過的概率并不高,大多數(shù)情況下需要尋找數(shù)百甚至上千次隨機數(shù)后才能找到大素數(shù),不適于運用在嵌入式系統(tǒng)中。
發(fā)明內(nèi)容
鑒于現(xiàn)有技術(shù)的不足,為了有效的解決現(xiàn)有技術(shù)的不足,本發(fā)明提出了一種在嵌入式系統(tǒng)中生成大素數(shù)的方法。本發(fā)明采用的技術(shù)方案如下—種在嵌入式系統(tǒng)中生成大素數(shù)的方法,應(yīng)用于包括第一存儲區(qū)和第二存儲區(qū)的系統(tǒng)中,所述第一存儲區(qū)存儲有預設(shè)大小的標識組,所述標識組中的標識的序號為包括O 在內(nèi)的數(shù)值連續(xù)的整數(shù),且不同的標識具有不同的序號;所述第二存儲區(qū)包括多個存儲單元,不同的存儲單元中存儲有不同的素數(shù),所述方法包括以下步驟①、將所述第一存儲區(qū)中存儲的標識組中的全部標識置位;生成預定位數(shù)長度的隨機數(shù),將所述隨機數(shù)存儲到第三存儲區(qū),以所述第二存儲區(qū)中的存儲單元存儲的數(shù)據(jù)為模數(shù),對所述第三存儲區(qū)存儲的數(shù)據(jù)取模,得到取模值;根據(jù)所述取模值以及所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù),確定所述標識組中需要被復位的標識的序號,并對所述序號對應(yīng)的標識進行復位;②、判斷所述標識組中是否存在置位的標識,如果存在,則執(zhí)行步驟③;如果不存在,則返回步驟①;③、根據(jù)所述隨機數(shù)和所述標識組中置位的標識的序號確定待測數(shù),對所述待測數(shù)進行素性檢測,如果所述待測數(shù)通過素性檢測,則將所述待測數(shù)作為大素數(shù)輸出;如果所述標識組中所有置位的標識對應(yīng)的待測數(shù)均未通過素性檢測,則返回步驟①。其中,所述根據(jù)所述取模值以及所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù),確定所述標識組中需要被復位的標識的序號,具體為當所述取模值為O時,將所述取模值與所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù)的整數(shù)倍的和,作為所述需要被復位的標識的序號;當所述取模值為奇數(shù)時,獲取所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù)與所述取模值之間的差,將所述差除以2得到的結(jié)果作為所述需要被復位的標識的序號;當所述取模值為非零偶數(shù)時,獲取所述當前取模值除以2得到的商,將所述當前素數(shù)與所述商的差作為所述需要被復位的標識的序號;所述根據(jù)所述隨機數(shù)和所述標識組中置位的標識的序號確定待測數(shù),具體為將所述置位的標識的序號的2倍與所述隨機數(shù)相加得到的結(jié)果,作為所述待測數(shù)?;蛘撸龈鶕?jù)所述取模值以及所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù),確定所述標識組中需要被復位的標識的序號,具體為當所述取模值為O時,將所述取模值與所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù)的整數(shù)倍的和,作為所述需要被復位的標識的序號;當所述取模值為奇數(shù)時,獲取所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù)與所述取模值的和,將所述和除以2得到的商作為所述需要被復位的標識的序號;當所述取模值為非零偶數(shù)時,將所述取模值除以2得到的商作為所述需要被復位的標識的序號;所述根據(jù)所述隨機數(shù)和所述標識組中置位的標識的序號確定待測數(shù),具體為將所述隨機數(shù)與所述置位的標識的序號的2倍的差,作為所述待測數(shù)。其中,所述生成預定位數(shù)長度的隨機數(shù),包括生成預定位數(shù)長度的二進制數(shù);判斷所述二進制數(shù)的最低位是否為1,如果所述最低位為1,則將所述二進制數(shù)作為所述隨機數(shù);如果所述最低位不為1,則將所述最低位置為1,并將所述二進制數(shù)作為所述隨機數(shù)。其中,所述生成預定位數(shù)長度的隨機數(shù),包括生成預定位數(shù)長度的二進制數(shù);判斷所述二進制數(shù)的最高位是否為1,如果所述最高位為1,則將所述二進制數(shù)作為所述隨機數(shù);如果所述最高位不為1,則將所述最高位置為1,并將所述二進制數(shù)作為所述隨機數(shù)。本發(fā)明的有益效果在于提供了一種適用于嵌入式系統(tǒng)的大素數(shù)生成方法,所述方法通過在素性檢測前用小素數(shù)對需要檢測的數(shù)據(jù)進行篩選,大大提高了素性檢測通過的概率,進而提高大素數(shù)生成的效率。
圖I為本發(fā)明實施例一中提供的一種在嵌入式系統(tǒng)中生成大素數(shù)的方法的流程圖;圖2為本發(fā)明實施例二中提供的一種在嵌入式系統(tǒng)中生成大素數(shù)的方法的流程圖;圖3為本發(fā)明實施例三提供的一種通過CPU生成大素數(shù)的方法的流程圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。實施例一參見圖1,為了提高素性檢測通過的概率,從而提高大素數(shù)生成的效率,本實施例一提供了一種在嵌入式系統(tǒng)中生成大素數(shù)的方法,具體步驟如下步驟SI :將預定大小的標識組中的全部標識置位;具體地,在本實施例中,所述預定大小為768,所述標識組含有768個標識。除此之
外,也可以使用其他大小。為便于描述,依序?qū)⑵溆洖榈贠標識、第I標識.....第766標識
和第767標識;步驟S2 :生成預定位數(shù)長度的隨機數(shù);具體地,在本實施例中,所述預定位數(shù)長度為1024。除此之外,也可以使用其他位數(shù)長度。優(yōu)選地,在本實施例中,步驟S2還包括如果生成的所述隨機數(shù)的最低位不為1,則將其置為I ;如果生成的所述隨機數(shù)的最高位不為1,則將其置為I ;進一步地,如果生成的所述隨機數(shù)的次高位不為1,則將其置為I。這是為了保證隨機數(shù)足夠大且不為偶數(shù)。步驟SI和步驟S2的順序可以顛倒。步驟S3 :根據(jù)所述隨機數(shù)和預定的小素數(shù)表對所述標識組進行處理。具體地,在本實施例中,所述小素數(shù)表中包含3-255之間的所有小素數(shù)3,5,7, 11,......等等。除此之外,也可使用其他的素數(shù)表。步驟S3具體為對所述小素數(shù)表中的每個素數(shù),進行如下步驟步驟S3-1 :以當前小素數(shù)為模數(shù),對所述隨機數(shù)取模,得到取模值;若當前小素數(shù)為η,則取模值的范圍為O, I,......n-lo具體地,例如,當前素數(shù)為
13,則取模值的范圍為0,1,......12。如果取模計算的結(jié)果不在所述范圍內(nèi),可通過加上或減去當前小素數(shù)的整數(shù)倍, 使結(jié)果在所述范圍之內(nèi)。步驟S3-2 :根據(jù)所述取模值計算各單元中將要復位的標識編號。具體地,步驟S3-2具體為①、將所述標識組根據(jù)當前素數(shù)分為多個單元,將單元中的標識依序編號為O、 I、...,如果所述取模值為0,所述將要復位的標識編號為O ;否則,如果所述取模值為奇數(shù), 所述將要復位的標識編號為當前素數(shù)與所述取模值之差再除以2 ;否則,所述取模值為偶數(shù),所述將要復位的標識編號為當前素數(shù)減去所述取模值除以2后的結(jié)果;例如,設(shè)當前素數(shù)為13,則將所述標識組分為(768與13相除,取整加1)60個單元。其中59個單元各有13個標識,最后一個單元有I個標識,如果所述取模值為5,則所述將要復位的標識編號為(13-5)/2 = 4 ;如果所述取模值為6,則所述將要復位的標識編號為13-(6/2) = 10。或者為②、如果所述取模值為0,所述將要復位的標識編號為O以及當前素數(shù)的整數(shù)倍; 否則,如果所述取模值為奇數(shù),所述將要復位的標識編號為當前素數(shù)與所述取模值之差再除以2的結(jié)果,以及所述結(jié)果與當前素數(shù)的整數(shù)倍的和;否則,如果所述取模值為偶數(shù),所述將要復位的標識編號為當前素數(shù)與所述取模值除以2的商的差,以及所述差與當前素數(shù)的整數(shù)倍的和;例如,設(shè)當前素數(shù)為13,如果所述取模值為5,則所述將要復位的標識編號為 (13-5)/2 = 4,以及4與當前素數(shù)13的整數(shù)倍的和;如果所述取模值為6,則所述將要復位的標識編號為13-(6/2) = 10,以及4與當前素數(shù)13的整數(shù)倍的和。步驟S3-3 將標識組中相應(yīng)標識復位。如果標識組中沒有對應(yīng)所述編號的標識,則跳過本步驟。步驟S4 :根據(jù)所述隨機數(shù)和所述標識組生成一組待測數(shù),進行素性檢測。具體地,依序檢查所述標識組,進行如下操作步驟S4-1 :如果所有標識都檢查完畢,結(jié)束;否則,檢查當前標識是否置位。如果是,計算當前標識序號的2倍與所述隨機數(shù)的和,所述和為當前待測數(shù),對當前待測數(shù)進行素性檢測;否則,繼續(xù);步驟S4-2 :將下一個標識設(shè)為當前標識,返回步驟S4-1。步驟S3-2可替換為步驟S3-2',相應(yīng)地,步驟S4_l替換為步驟S4_P,所述步驟 S3-2'和步驟S4-1'的具體內(nèi)容如下步驟S3-2':根據(jù)所述取模值計算各單元中將要復位的標識編號。①、將所述標識組根據(jù)當前素數(shù)分為多個單元,將單元中的標識依序編號為O、 I、...,如果所述取模值為0,所述將要復位的標識編號為O ;否則,如果所述取模值為奇數(shù), 所述將要復位的標識編號為當前素數(shù)與所述取模值之和再除以2 ;否則,所述取模值為偶數(shù),所述將要復位的標識編號為所述取模值除以2后的結(jié)果。例如,設(shè)當前素數(shù)為13,則將所述標識組分為(768與13相除,取整加1)60個單元。其中59個單元各有13個標識,最后一個單元有I個標識,如果所述取模值為5,則所述將要復位的標識編號為(13+5)/2 = 9 ;如果所述取模值為6,則所述將要復位的標識編號為 6/2 = 3;②、如果所述取模值為0,所述將要復位的標識編號為O以及當前素數(shù)的整數(shù)倍; 否則,如果所述取模值為奇數(shù),所述將要復位的標識編號為當前素數(shù)與所述取模值之和再除以2的結(jié)果,以及所述結(jié)果與當前素數(shù)的整數(shù)倍的和;否則,如果所述取模值為偶數(shù),所述將要復位的標識編號為所述取模值除以2后的結(jié)果,以及所述結(jié)果與當前素數(shù)的整數(shù)倍的和;例如,設(shè)當前素數(shù)為13,如果所述取模值為5,則所述將要復位的標識編號為 (13+5)/2 = 9,以及9與當前素數(shù)13的整數(shù)倍的和;如果所述取模值為6,則所述將要復位的標識編號為6/2 = 3,以及3與當前素數(shù)13的整數(shù)倍的和。步驟S4-1':如果所有標識都檢查完畢,結(jié)束;否則,檢查當前標識是否置位。如果是,計算所述隨機數(shù)與當前標識序號的2倍的差,所述差為當前待測數(shù),對當前待測數(shù)進行素性檢測;否則,繼續(xù);實施例二參見圖2,為了提高素性檢測通過的概率,從而提高大素數(shù)生成的效率,本實施例二在實施例一的基礎(chǔ)上提供了一種在嵌入式系統(tǒng)中生成大素數(shù)的方法,具體步驟如下步驟101 :計算機將第一存儲區(qū)中每一數(shù)據(jù)單元的值均置為有效值;優(yōu)選地,在本實施例中,所述第一存儲區(qū)的大小為768比特,每I比特為一個數(shù)據(jù)單元,對應(yīng)768個隨機數(shù)標識,具體地,依序記各數(shù)據(jù)單元的序號值為O、I、. . .、766、767 ;優(yōu)選地,在本實施例中,所述有效值為I。步驟102 :所述計算機生成指定位數(shù)長度的隨機數(shù)存于第三存儲區(qū)中,并在所述隨機數(shù)最低比特位的值不為I時將其置為I ;在本實施例中,為了確保生成的隨機數(shù)足夠大,可以將所述隨機數(shù)的最高比特位和次高比特位的值均置為I ;還可以對隨機數(shù)進行其他設(shè)置,以便于素數(shù)的生成,在此不再
贅述;優(yōu)選地,在本實施例中,所述指定位數(shù)長度為64位,即生成長度為512比特的隨機數(shù),所述隨機數(shù)記為P,相應(yīng)地,所述步驟101中,各數(shù)據(jù)單元分別為隨機數(shù)p+2*m(m = O, I, 2,. . .,766,767)的標識,所述m為所述存儲空間中數(shù)據(jù)單元的序號值。步驟103 :所述計算機以第二存儲區(qū)中的當前數(shù)據(jù)為模數(shù),對所述第三存儲區(qū)中的數(shù)據(jù)取模,得到當前取模值存于第四存儲區(qū)中,當所述第四存儲取中的數(shù)據(jù)為O時,執(zhí)行步驟106 ;為奇數(shù)時,執(zhí)行步驟104 ;為非O偶數(shù)時,執(zhí)行步驟105 ;優(yōu)選地,在本實施例中,所述第二存儲區(qū)中包含3-255之間的所有小素數(shù),每個小素數(shù)占用一個存儲單元,所述存儲單元可以為若干比特或若干字節(jié);具體地,在本實施例中,第一次執(zhí)行所述步驟103時,所述當前數(shù)據(jù)為所述第二存儲區(qū)的第一存儲單元中的數(shù)據(jù)。步驟104 :所述計算機計算所述第二存儲區(qū)中的當前數(shù)據(jù)和所述所述第四存儲區(qū)中的數(shù)據(jù)的差再除以2,用結(jié)果替換所述第四存儲區(qū)中的數(shù)據(jù),執(zhí)行步驟106 ;步驟105 :所述計算機計算所述第二存儲區(qū)中的當前數(shù)據(jù)與所述第四存儲區(qū)中的數(shù)據(jù)除以2的商的差,用所述差替換所述第四存儲區(qū)中的數(shù)據(jù);步驟106 :將所述第一存儲區(qū)的相應(yīng)數(shù)據(jù)單元中值為有效值的數(shù)據(jù)單元的值置為無效值;具體地,在本實施例中,若所述相應(yīng)數(shù)據(jù)單元的值均為無效值,則直接執(zhí)行步驟
107;優(yōu)選地,在本實施例中,所述相應(yīng)數(shù)據(jù)單元具體為序號值為所述當前取模值的數(shù)據(jù)單元、序號值為所述當前取模值與所述第二存儲區(qū)中當前數(shù)據(jù)的整數(shù)倍的和的數(shù)據(jù)單元;所述無效值為O。步驟107 :所述計算機判斷所述第二存儲區(qū)中是否存在下一個數(shù)據(jù)單元,是則將所述下一個數(shù)據(jù)單元中的數(shù)據(jù)作為當前數(shù)據(jù),返回執(zhí)行步驟103,否則執(zhí)行步驟108 ;步驟108 :所述計算機判斷所述第一存儲區(qū)的當前數(shù)據(jù)單元的值是否為有效值, 是則執(zhí)行步驟109,否則執(zhí)行步驟112 ;具體地,在本實施例中,第一次執(zhí)行所述步驟108時,所述當前數(shù)據(jù)單元為所述第一存儲區(qū)中序號值為O的數(shù)據(jù)單元。步驟109 :所述計算機計算所述當前數(shù)據(jù)單元的序號值的2倍與所述第三存儲區(qū)中的數(shù)據(jù)的和,并對所述和進行素性檢測;步驟110 :所述計算機判斷所述和是否通過了素性檢測,是則執(zhí)行步驟111,否則執(zhí)行步驟112 ;步驟111 :所述計算機將所述和作為大素數(shù)輸出,結(jié)束進程;步驟112 :判斷所述第一存儲區(qū)中是否存在下一個數(shù)據(jù)單元,是則將所述下一個數(shù)據(jù)單元作為當前數(shù)據(jù)單元,返回執(zhí)行步驟108,否則返回執(zhí)行步驟102。在本實施例中,所述步驟101可以在步驟106之前的任意位置執(zhí)行。實施例三參見圖3,本實施例三提供了一種通過CPU生成大素數(shù)的方法,具體步驟如下步驟201 :CPU在內(nèi)存區(qū)域中開辟預設(shè)大小的第一數(shù)據(jù)存儲區(qū),將所述第一數(shù)據(jù)存儲區(qū)中每一數(shù)據(jù)單元的值均置為有效,并將所述數(shù)據(jù)單元的個數(shù)存于第二數(shù)據(jù)存儲區(qū);其中,所述數(shù)據(jù)單元可以為一個比特位或一個字節(jié),也可以為多個比特位或多個字節(jié)等,優(yōu)選地,在本實施例中,所述數(shù)據(jù)單元為一個比特位,當所述數(shù)據(jù)單元的值為I時有效,為O時無效;為便于描述,在本實施例中,將各個數(shù)據(jù)單元依序編號為0,1,2...。步驟202 =CPU初始化第一變量存儲區(qū)中的第一變量i ;具體地,在本實施例中,CPU將所述第一變量i的值初始化為I。步驟203 =CPU以第四數(shù)據(jù)存儲區(qū)中的第i個數(shù)據(jù)作為模數(shù),對第三數(shù)據(jù)存儲區(qū)中的數(shù)據(jù)取模,得到當前取模值,存于第四變量存儲區(qū)中;其中,所述第三數(shù)據(jù)存儲區(qū)中存儲了隨機數(shù)發(fā)生器生成的指定位長的隨機數(shù),優(yōu)選地,在本實施例中,隨機數(shù)發(fā)生器生成位長為512比特的隨機數(shù);所述第四數(shù)據(jù)存儲區(qū)中存儲了一組素數(shù),且所述素數(shù)的個數(shù)值存于第五數(shù)據(jù)存儲區(qū),優(yōu)選地,在本實施例中,所述第四數(shù)據(jù)存儲區(qū)中存儲了 3-255之間的所有小素數(shù)。步驟204 =CPU檢測所述第四變量存儲區(qū)中的數(shù)據(jù);步驟205 =CPU初始化第二變量存儲區(qū)中的第二變量j ;具體地,在本實施例中當所述第四變量存儲區(qū)中的數(shù)據(jù)為O時,CPU將所述第二變量j的值初始化為所述第四存儲區(qū)中的數(shù)據(jù);當所述第四變量存儲區(qū)中的數(shù)據(jù)為奇數(shù)時,CPU將所述第二變量j的值初始化為所述第三變量存儲區(qū)中的數(shù)據(jù)與第四數(shù)據(jù)存儲區(qū)中的第i數(shù)據(jù)的差再除以2后的值;當所述第四變量存儲區(qū)中的數(shù)據(jù)為非O偶數(shù)時,CPU將所述第二變量j的值初始化為第四數(shù)據(jù)存儲區(qū)中的第i數(shù)據(jù)減去所述第三變量存儲區(qū)中數(shù)據(jù)除以2后的商。步驟206 :CPU檢測所述第一數(shù)據(jù)存儲區(qū)中第j數(shù)據(jù)單元的值是否有效,是則執(zhí)行步驟207,否則執(zhí)行步驟208 ;步驟207 =CPU將所述第一數(shù)據(jù)存儲區(qū)中第j數(shù)據(jù)單元的值置為無效;步驟208 =CPU更新所述第二變量存儲區(qū)中所述第二變量j的值;具體地,在本實施例中,所述更新所述第二變量存儲區(qū)中所述第二變量j的值具體為將所述第二變量j的值更新為所述第二變量j與所述第四數(shù)據(jù)存儲區(qū)中第i數(shù)據(jù)的和。步驟209 :CPU判斷所述第二變量存儲區(qū)中所述第二變量j的值是否大于所述第二數(shù)據(jù)存儲區(qū)中的數(shù)據(jù),是則執(zhí)行步驟210,否則返回執(zhí)行步驟206 ;步驟210 =CPU更新所述第一變量存儲區(qū)中所述第一變量i的值;具體地,在本實施例中,所述更新所述第一變量存儲區(qū)中所述第一變量i的值具體為將所述第一變量i的值更新為所述第一變量i加I后的值。步驟211 :CPU判斷所述第一變量存儲區(qū)中所述第一變量i的值是否大于所述第五數(shù)據(jù)存儲區(qū)中的數(shù)據(jù),是則執(zhí)行步驟212,否則返回執(zhí)行步驟203 ;步驟212 =CPU初始化第三變量存儲區(qū)中的第三變量k ;具體地,在本實施例中,所述CPU將所述第三變量k的值初始化為O。步驟213 :CPU判斷所述第一數(shù)據(jù)存儲區(qū)中的第k數(shù)據(jù)單元的值是否有效,是則執(zhí)行步驟216,否則執(zhí)行步驟214 步驟214 =CPU更新所述第三變量存儲區(qū)中所述第三變量k的值;具體地,在本實施例中,所述更新所述第三變量存儲區(qū)中所述第三變量k的值具體為將所述第三變量k的值更新為所述第三變量k加I后的值。步驟215 :CPU判斷所述第三變量存儲區(qū)中第三變量k的值是否大于所述第二數(shù)據(jù)存儲區(qū)中的數(shù)據(jù),是則更新第三數(shù)據(jù)存儲區(qū)中的數(shù)據(jù),返回執(zhí)行步驟202,否則返回執(zhí)行步驟 213 ;步驟216 :CPU計算所述第三數(shù)據(jù)存儲區(qū)中的數(shù)據(jù)與所述第三變量存儲區(qū)中第三變量k的2倍的和,存于第五變量存儲區(qū);步驟217 :CPU判斷所述第五變量存儲區(qū)中的數(shù)據(jù)可否通過素性檢測,是則執(zhí)行步驟218,否則返回執(zhí)行步驟214 ;步驟218 :CPU輸出所述第五變量存儲區(qū)中的數(shù)據(jù)。結(jié)合本文中所公開的實施例描述的方法中的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器 (ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。以上所述,僅為本發(fā)明的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)所述以權(quán)利要求的保護范圍為準。
權(quán)利要求
1.一種在嵌入式系統(tǒng)中生成大素數(shù)的方法,應(yīng)用于包括第一存儲區(qū)和第二存儲區(qū)的系統(tǒng)中,其特征在于,所述第一存儲區(qū)存儲有預設(shè)大小的標識組,所述標識組中的標識的序號為包括O在內(nèi)的數(shù)值連續(xù)的整數(shù),且不同的標識具有不同的序號;所述第二存儲區(qū)包括多個存儲單元,不同的存儲單元中存儲有不同的素數(shù),所述方法包括以下步驟①、將所述第一存儲區(qū)中存儲的標識組中的全部標識置位;生成預定位數(shù)長度的隨機數(shù),將所述隨機數(shù)存儲到第三存儲區(qū),以所述第二存儲區(qū)中的存儲單元存儲的數(shù)據(jù)為模數(shù), 對所述第三存儲區(qū)存儲的數(shù)據(jù)取模,得到取模值;根據(jù)所述取模值以及所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù),確定所述標識組中需要被復位的標識的序號,并對所述序號對應(yīng)的標識進行復位;②、判斷所述標識組中是否存在置位的標識,如果存在,則執(zhí)行步驟③;如果不存在,則返回步驟①;③、根據(jù)所述隨機數(shù)和所述標識組中置位的標識的序號確定待測數(shù),對所述待測數(shù)進行素性檢測,如果所述待測數(shù)通過素性檢測,則將所述待測數(shù)作為大素數(shù)輸出;如果所述標識組中所有置位的標識對應(yīng)的待測數(shù)均未通過素性檢測,則返回步驟①。
2.如權(quán)利要求I所述的方法,其特征在于,所述根據(jù)所述取模值以及所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù),確定所述標識組中需要被復位的標識的序號,具體為當所述取模值為O時,將所述取模值與所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù)的整數(shù)倍的和,作為所述需要被復位的標識的序號;當所述取模值為奇數(shù)時,獲取所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù)與所述取模值之間的差,將所述差除以2得到的結(jié)果作為所述需要被復位的標識的序號;當所述取模值為非零偶數(shù)時,獲取所述當前取模值除以2得到的商,將所述當前素數(shù)與所述商的差作為所述需要被復位的標識的序號;所述根據(jù)所述隨機數(shù)和所述標識組中置位的標識的序號確定待測數(shù),具體為將所述置位的標識的序號的2倍與所述隨機數(shù)相加得到的結(jié)果,作為所述待測數(shù)。
3.如權(quán)利要求I所述的方法,其特征在于,所述根據(jù)所述取模值以及所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù),確定所述標識組中需要被復位的標識的序號,具體為當所述取模值為O時,將所述取模值與所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù)的整數(shù)倍的和,作為所述需要被復位的標識的序號;當所述取模值為奇數(shù)時,獲取所述取模值對應(yīng)的存儲單元存儲的數(shù)據(jù)與所述取模值的和,將所述和除以2得到的商作為所述需要被復位的標識的序號;當所述取模值為非零偶數(shù)時,將所述取模值除以2得到的商作為所述需要被復位的標識的序號;所述根據(jù)所述隨機數(shù)和所述標識組中置位的標識的序號確定待測數(shù),具體為將所述隨機數(shù)與所述置位的標識的序號的2倍的差,作為所述待測數(shù)。
4.如權(quán)利要求I所述的方法,其特征在于,所述生成預定位數(shù)長度的隨機數(shù),包括生成預定位數(shù)長度的二進制數(shù);判斷所述二進制數(shù)的最低位是否為1,如果所述最低位為1,則將所述二進制數(shù)作為所述隨機數(shù);如果所述最低位不為1,則將所述最低位置為1,并將所述二進制數(shù)作為所述隨機數(shù)。
5.如權(quán)利要求I所述的方法,其特征在于,所述生成預定位數(shù)長度的隨機數(shù),包括生成預定位數(shù)長度的二進制數(shù);判斷所述二進制數(shù)的最高位是否為1,如果所述最高位為1,則將所述二進制數(shù)作為所述隨機數(shù);如果所述最高位不為1,則將所述最高位置為1,并將所述二進制數(shù)作為所述隨機數(shù)。
全文摘要
本發(fā)明公開一種在嵌入式系統(tǒng)中生成大素數(shù)的方法,包括①將第一存儲區(qū)中標識組的全部標識置位;生成預定位長的隨機數(shù)存于第三存儲區(qū),以第二存儲區(qū)存儲單元中存儲的數(shù)據(jù)為模數(shù),對所述第三存儲區(qū)中的數(shù)據(jù)取模,根據(jù)取模值以及所述取模值對應(yīng)的存儲單元中的數(shù)據(jù)確定所述標識組中需被復位標識的序號,將所述序號對應(yīng)的標識復位;②判斷所述標識組中是否有置位的標識,是則執(zhí)行③;否則返回①;③根據(jù)所述隨機數(shù)和所述標識組中置位的標識的序號確定待測數(shù),對所述待測數(shù)進行素性檢測,若所述待測數(shù)通過素性檢測則輸出所述待測數(shù);若所述標識組中所有置位的標識對應(yīng)的待測數(shù)均未通過素性檢測,則返回①,該方法效率高,適用于嵌入式系統(tǒng)。
文檔編號G06F7/72GK102591618SQ201110439890
公開日2012年7月18日 申請日期2011年12月23日 優(yōu)先權(quán)日2011年12月23日
發(fā)明者于華章, 陸舟 申請人:飛天誠信科技股份有限公司