一種生成大素數(shù)的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于信息安全技術(shù)領(lǐng)域,尤其涉及一種生成大素數(shù)的方法及裝置。
【背景技術(shù)】
[0002]RSA(Rivest-Shamir-Adleman)公鑰密碼體制由于實現(xiàn)了數(shù)字簽名、信息驗證和身份認證,現(xiàn)有很多場合都采用RSA算法進行加密,如S頂卡、智能卡、加密芯片、安全芯片等產(chǎn)品中,RSA應(yīng)用需要一對密鑰,并且密鑰對生成所消耗的時間占據(jù)加解密的絕大部分,因此必須解決RSA密鑰對在使用中的生成問題,而密鑰對的生成的核心則是RSA大素數(shù)的生成。
[0003]目前,RSA大素數(shù)的生成流程就大概有三個步驟,隨機大奇數(shù)的產(chǎn)生,小素數(shù)試除,Miller-Rabin素性測試,如流程圖1所示,其中,用Miller-Rabin素性測試來生成RSA大素數(shù),在Miller-Rabin素性測試之前,一般先用小素數(shù)3、5和7試除,由于試除的計算量及存儲空間也不能忽略,綜合考慮一般都是用幾個小素數(shù)進行試除以排除奇合數(shù),進而加快素數(shù)的生成。
[0004]然而,現(xiàn)在的大素數(shù)生成算法里,都是先經(jīng)過小素數(shù)試除,篩除部分明顯的非素數(shù),然后再進行素性判定,上面步驟中最耗時的部分就是小素數(shù)試除和模冪運算,由于最初產(chǎn)生的大奇數(shù)位數(shù)很大,而且每次判定非素數(shù)之后只加2,因而要進行上面步驟中的試除和素性判定的次數(shù)會非常的多,那么這種串行的方式會很浪費時間。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實施例提供了一種生成大素數(shù)的方法及裝置,旨在解決現(xiàn)有技術(shù)試除和素性判定的次數(shù)會非常的多,這種串行的方式會很浪費時間的問題。
[0006]—方面,提供一種生成大素數(shù)的方法,所述方法包括:
[0007]隨機生成一個大奇數(shù);
[0008]以第一小素數(shù)對所述大奇數(shù)進行試除獲得初篩數(shù)據(jù);
[0009]第一次的小素數(shù)試除結(jié)束后,繼續(xù)執(zhí)行其它大奇數(shù)的試除,同時,調(diào)用RSA硬件的模冪運算單元對所述初篩數(shù)據(jù)進行至少一次模冪運算直至獲得大素數(shù)。
[0010]進一步地,所述以第一小素數(shù)對所述大奇數(shù)進行試除獲得初篩數(shù)據(jù)之后還包括:
[0011]如果以第一小素數(shù)對所述大奇數(shù)試除判斷所述大奇數(shù)為非素數(shù),則所述大奇數(shù)加2之后繼續(xù)進行第一小素數(shù)的試除。
[0012]進一步地,所述第一小素數(shù)至少包括3、5和7。
[0013]進一步地,所述調(diào)用RSA硬件的模冪運算單元對所述初篩數(shù)據(jù)進行至少一次模冪運算直至獲得大素數(shù)執(zhí)行的同時還包括:
[0014]以第二小素數(shù)對所述大奇數(shù)進行試除,如果以第二小素數(shù)對所述大奇數(shù)試除判斷所述大奇數(shù)為非素數(shù),則所述大奇數(shù)加2之后繼續(xù)進行第一小素數(shù)的試除;如果以第二小素數(shù)對所述大奇數(shù)試除通過,則可判斷所述大奇數(shù)為素數(shù),等待模冪運算結(jié)束。
[0015]進一步地,所述第二小素數(shù)至少包括11、13和17。
[0016]另一方面,提供一種生成大素數(shù)的裝置,所述裝置包括:
[0017]數(shù)據(jù)產(chǎn)生單元,用于隨機生成一個大奇數(shù);
[0018]第一試除單元,用于以第一小素數(shù)對所述大奇數(shù)進行試除獲得初篩數(shù)據(jù);
[0019]模冪運算單元,用于第一次的小素數(shù)試除結(jié)束后,繼續(xù)執(zhí)行其它大奇數(shù)的試除,同時,調(diào)用RSA硬件的模冪運算單元對所述初篩數(shù)據(jù)進行至少一次模冪運算直至獲得大素數(shù)。
[0020]進一步地,所述裝置還包括:
[0021]數(shù)據(jù)更新單元,用于如果以第一小素數(shù)對所述大奇數(shù)試除判斷所述大奇數(shù)為非素數(shù),則所述大奇數(shù)加2之后繼續(xù)進行第一小素數(shù)的試除。
[0022]進一步地,所述第一小素數(shù)至少包括3、5和7。
[0023]進一步地,所述裝置還包括:
[0024]第二試除單元,用于以第二小素數(shù)對所述大奇數(shù)進行試除,如果以第二小素數(shù)對所述大奇數(shù)試除判斷所述大奇數(shù)為非素數(shù),則所述大奇數(shù)加2之后繼續(xù)進行第一小素數(shù)的試除;如果以第二小素數(shù)對所述大奇數(shù)試除通過,則可判斷所述大奇數(shù)為素數(shù),等待模冪運算結(jié)束。
[0025]進一步地,所述第二小素數(shù)至少包括11、13和17。
[0026]在本發(fā)明實施例,隨機生成一個大奇數(shù);以第一小素數(shù)對所述大奇數(shù)進行試除獲得初篩數(shù)據(jù);第一次的小素數(shù)試除結(jié)束后,繼續(xù)執(zhí)行其它大奇數(shù)的試除,同時,調(diào)用RSA硬件的模冪運算單元對所述初篩數(shù)據(jù)進行至少一次模冪運算直至獲得大素數(shù),本發(fā)明,第一次的小素數(shù)試除是最早并且單獨完成,接下來并行計算第一次模冪和第二次小素數(shù)試除,接下來并行計算第二次模冪和第三次小素數(shù)試除,如此反復(fù)直到最后的素性判定通過,大素數(shù)生成的時間差不多就是模冪硬件計算的時間,不會單獨消耗時間運算小素數(shù)試除,減少總體大素數(shù)生成時間,提高了大素數(shù)生產(chǎn)的效率。
【附圖說明】
[0027]圖1是【背景技術(shù)】中現(xiàn)有生成大素數(shù)的方法的實現(xiàn)流程圖;
[0028]圖2是本發(fā)明實施例一提供的生成大素數(shù)的方法的實現(xiàn)流程圖;
[0029]圖3是本發(fā)明實施例一提供的生成大素數(shù)的方法的具體實現(xiàn)流程圖,其中添加了“流水計算模冪及小素數(shù)試除”的步驟;
[0030]圖4是本發(fā)明實施例一提供的試除和模冪的流水結(jié)構(gòu)示意圖;
[0031]圖5是圖3提到的“流水計算模冪及小素數(shù)試除”的具體實現(xiàn)流程圖,包括第二小素數(shù)試除的過程;
[0032]圖6是本發(fā)明實施例二提供的生成大素數(shù)的裝置的具體結(jié)構(gòu)框圖。
【具體實施方式】
[0033]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0034]在本發(fā)明實施例中,隨機生成一個大奇數(shù);以第一小素數(shù)對所述大奇數(shù)進行試除獲得初篩數(shù)據(jù);第一次的小素數(shù)試除結(jié)束后,繼續(xù)執(zhí)行其它大奇數(shù)的試除,同時,調(diào)用RSA硬件的模冪運算單元對所述初篩數(shù)據(jù)進行至少一次模冪運算直至獲得大素數(shù)。
[0035]以下結(jié)合具體實施例對本發(fā)明的實現(xiàn)進行詳細描述:
[0036]實施例一
[0037]圖2示出了本發(fā)明實施例一提供的生成大素數(shù)的方法的實現(xiàn)流程,詳述如下:
[0038]在步驟S201中,隨機生成一個大奇數(shù)。
[0039]在本實施例中,大奇數(shù)的生成和步驟S202都是由CPU通過軟件編程實現(xiàn)。
[0040]在步驟S202中,以第一小素數(shù)對所述大奇數(shù)進行試除獲得初篩數(shù)據(jù)。
[0041]在本實施例中,所述第一小素數(shù)至少包括3、5和7,其中,圖3所示了以3、5和7為第一小素數(shù)的生成大素數(shù)的方法流程圖。所述初篩數(shù)據(jù)為以第一小素數(shù)對所述大奇數(shù)進行試除排除合數(shù)之后的數(shù)據(jù)。以第一小素數(shù)對所述大奇數(shù)進行試除獲得初篩數(shù)據(jù),如果以第一小素數(shù)對所述大奇數(shù)試除判斷所述大奇數(shù)為非素數(shù),則所述大奇數(shù)加2之后繼續(xù)進行第一小素數(shù)的試除,否則執(zhí)行步驟S203。
[0042]在步驟S203中,第一次的小素數(shù)試除結(jié)束后,繼續(xù)執(zhí)行其它大奇數(shù)的試除,同時,調(diào)用RSA硬件的模冪運算單元對所述初篩數(shù)據(jù)進行至少一次模冪運算直至獲得大素數(shù)。
[0043]在本實施例中,模冪運算則調(diào)用RSA硬件的模冪運算單元實現(xiàn),因為每次調(diào)用Miller-Rabin素性測試之前都需要通過第一小素數(shù)試除排除部分顯而易見的合數(shù),因而他們就有了一前一后的關(guān)系,而為了讓他們能夠并行的執(zhí)行,運用了流水的概念,第一次的小素數(shù)試除是最早并且單獨完成,接下來并行計算第一次模冪和第二次小素數(shù)試除,接下來并行計算第二次模冪和第三次小素數(shù)試除,