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