專利名稱:一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全領(lǐng)域,特別是涉及一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法。
背景技術(shù):
隨著網(wǎng)絡(luò)應(yīng)用的普及,網(wǎng)絡(luò)安全變得越來(lái)越重要,各種網(wǎng)絡(luò)安全產(chǎn)品應(yīng)運(yùn)而生。網(wǎng)絡(luò)安全產(chǎn)品涉及到信息保密、漏洞防護(hù)等方面,通常使用大數(shù)運(yùn)算來(lái)保證數(shù)據(jù)的機(jī)密性。發(fā)明人在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下缺陷:現(xiàn)有技術(shù)中,在基于蒙哥馬利模乘實(shí)現(xiàn)的大數(shù)運(yùn)算過(guò)程中,通過(guò)減法和移位操作得到預(yù)計(jì)算值,處理速度較慢。
發(fā)明內(nèi)容
本發(fā)明提供了一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法,用于解決大數(shù)運(yùn)算過(guò)程中處理速度過(guò)慢的缺陷。本發(fā)明提供了一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法,包括以下步驟:S1、讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第一隨機(jī)存儲(chǔ)器;讀取第二寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第二隨機(jī)存儲(chǔ)器;所述第一寄存器用于存儲(chǔ)第一數(shù)據(jù),所述第二寄存器用于存儲(chǔ)第二數(shù)據(jù),所述第二數(shù)據(jù)的取值為以2為底數(shù),以第三數(shù)據(jù)的取值為指數(shù)的冪,所述第三數(shù)據(jù)為整數(shù);S2、調(diào)用取模模塊,對(duì)所述第一隨機(jī)存儲(chǔ)器和所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果分別寫入到第三寄存器和第四寄存器;所述取模模塊用于將所述第一隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),將所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為被模數(shù),進(jìn)行取模運(yùn)算;S3、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第三隨機(jī)存儲(chǔ)器和第四隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第五隨機(jī)存儲(chǔ)器;S4、調(diào)用模加模塊,對(duì)所述第三隨機(jī)存儲(chǔ)器、所述第四隨機(jī)存儲(chǔ)器和所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述模加模塊用于將所述第三隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第四隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為加數(shù),將所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),進(jìn)行模加運(yùn)算;S5、根據(jù)第五寄存器中的數(shù)據(jù),從第六寄存器中讀取位于最低位的數(shù)據(jù),將讀取到的數(shù)據(jù)作為當(dāng)前位數(shù)據(jù),所述第五寄存器中的數(shù)據(jù)的初始值為預(yù)設(shè)值,所述第六寄存器用于存儲(chǔ)所述第三數(shù)據(jù);S6、對(duì)所述當(dāng)前位數(shù)據(jù)的取值進(jìn)行判斷,如果所述當(dāng)前位數(shù)據(jù)的取值為零,則執(zhí)行步驟S7 ;如果所述當(dāng)前位數(shù)據(jù)的取值為1,則執(zhí)行步驟SlO ;S7、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第六隨機(jī)存儲(chǔ)器和第七隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第八隨機(jī)存儲(chǔ)器;S8、調(diào)用蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述蒙哥馬利模乘器用于將所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù)、所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)分別作為第一輸入?yún)?shù)、第二輸入?yún)?shù)和第三輸入?yún)?shù),進(jìn)行模乘運(yùn)算;S9、對(duì)所述第五寄存器中的數(shù)據(jù)進(jìn)行更新,根據(jù)更新后的所述第五寄存器中的數(shù)據(jù),從所述第六寄存器中讀取比所述當(dāng)前位數(shù)據(jù)高一位的數(shù)據(jù),將讀取到數(shù)據(jù)作為更新后的當(dāng)前位數(shù)據(jù),并返回步驟S6;S10、讀取所述第四寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取所述第三寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取所述第一寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù);S11、調(diào)用所述蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第四寄存器中的數(shù)據(jù);S12、判斷所述當(dāng)前位數(shù)據(jù)是否為所述第六寄存器中位于最高位的數(shù)據(jù),如果是,則執(zhí)行步驟S13 ;否則,返回步驟S7 ;S13、將所述第四寄存器中的數(shù)據(jù)輸出。本發(fā)明還提供了一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法,包括以下步驟:S1、讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第一隨機(jī)存儲(chǔ)器;讀取第二寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第二隨機(jī)存儲(chǔ)器;所述第一寄存器用于存儲(chǔ)第一數(shù)據(jù),所述第二寄存器用于存儲(chǔ)第二數(shù)據(jù),所述第二數(shù)據(jù)的取值為以2為底數(shù),以第三數(shù)據(jù)的取值為指數(shù)的冪,所述第三數(shù)據(jù)為整數(shù);S2、調(diào)用取模模塊,對(duì)所述第一隨機(jī)存儲(chǔ)器和所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果分別寫入到第三寄存器和第四寄存器;所述取模模塊用于將所述第一隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),將所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為被模數(shù),進(jìn)行取模運(yùn)算;S3、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第三隨機(jī)存儲(chǔ)器和第四隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第五隨機(jī)存儲(chǔ)器;S4、調(diào)用模加模塊,對(duì)所述第三隨機(jī)存儲(chǔ)器、所述第四隨機(jī)存儲(chǔ)器和所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述模加模塊用于將所述第三隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第四隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為加數(shù),將所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),進(jìn)行模加運(yùn)算;S5、讀取所述第四寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第六隨機(jī)存儲(chǔ)器和第七隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第八隨機(jī)存儲(chǔ)器;調(diào)用蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第四寄存器中的數(shù)據(jù);所述蒙哥馬利模乘器用于將所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù)、所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)分別作為第一輸入?yún)?shù)、第二輸入?yún)?shù)和第三輸入?yún)?shù),進(jìn)行模乘運(yùn)算;根據(jù)第五寄存器中的數(shù)據(jù),從第六寄存器中讀取位于最高位的數(shù)據(jù),將讀取到的數(shù)據(jù)作為當(dāng)前位數(shù)據(jù),所述第五寄存器中的數(shù)據(jù)的初始值為預(yù)設(shè)值,所述第六寄存器用于存儲(chǔ)所述第三數(shù)據(jù);S6、對(duì)所述當(dāng)前位數(shù)據(jù)的取值進(jìn)行判斷,如果所述當(dāng)前位數(shù)據(jù)的取值為零,則執(zhí)行步驟S9 ;如果所述當(dāng)前位數(shù)據(jù)的取值為1,則執(zhí)行步驟S7 ;S7、讀取所述第四寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取所述第三寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取所述第一寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù);S8、調(diào)用所述蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第四寄存器中的數(shù)據(jù),并執(zhí)行步驟S9 ;S9、判斷所述當(dāng)前位數(shù)據(jù)是否為所述第六寄存器中位于最低位的數(shù)據(jù),如果是,則執(zhí)行步驟Sll ;否則,執(zhí)行步驟SlO ;S10、讀取所述第四寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)分別更新所述第六隨機(jī)存儲(chǔ)器和所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取所述第一寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù);調(diào)用蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第四寄存器中的數(shù)據(jù);所述蒙哥馬利模乘器用于將所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù)、所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)分別作為第一輸入?yún)?shù)、第二輸入?yún)?shù)和第三輸入?yún)?shù),進(jìn)行模乘運(yùn)算;對(duì)所述第五寄存器中的數(shù)據(jù)進(jìn)行更新,根據(jù)更新后的所述第五寄存器中的數(shù)據(jù),從所述第六寄存器中讀取比所述當(dāng)前位數(shù)據(jù)低一位的數(shù)據(jù),將讀取到數(shù)據(jù)作為更新后的當(dāng)前位數(shù)據(jù),并返回步驟S6;S11、將所述第四寄存器中的數(shù)據(jù)輸出。本發(fā)明還提供了一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法,包括以下步驟:S1、讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第一隨機(jī)存儲(chǔ)器;讀取第二寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第二隨機(jī)存儲(chǔ)器中;所述第一寄存器用于存儲(chǔ)第一數(shù)據(jù),所述第二寄存器用于存儲(chǔ)第二數(shù)據(jù),所述第二數(shù)據(jù)的取值為以2為底數(shù),以第三數(shù)據(jù)的取值為指數(shù)的冪,所述第三數(shù)據(jù)為整數(shù);S2、調(diào)用取模模塊,對(duì)所述第一隨機(jī)存儲(chǔ)器和所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果分別寫入到第三寄存器和第四寄存器;所述取模模塊用于將所述第一隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),將所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為被模數(shù),進(jìn)行取模運(yùn)算;S3、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第三隨機(jī)存儲(chǔ)器和第四隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第五隨機(jī)存儲(chǔ)器;S4、調(diào)用模加模塊,對(duì)所述第三隨機(jī)存儲(chǔ)器、所述第四隨機(jī)存儲(chǔ)器和所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述模加模塊用于將所述第三隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第四隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為加數(shù),將所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),進(jìn)行模加運(yùn)算;S5、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第六隨機(jī)存儲(chǔ)器和第七隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第八隨機(jī)存儲(chǔ)器;S6、調(diào)用蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述蒙哥馬利模乘器用于將所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù)、所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)分別作為第一輸入?yún)?shù)、第二輸入?yún)?shù)和第三輸入?yún)?shù),進(jìn)行模乘運(yùn)算;S7、將第五寄存器中的數(shù)據(jù)加1,將得到的結(jié)果作為更新后的所述第五寄存器中的數(shù)據(jù),判斷所述第五寄存器中的數(shù)據(jù)是否等于所述第六寄存器中的數(shù)據(jù)的長(zhǎng)度,如果是,則執(zhí)行步驟S8 ;否則,返回步驟S5 ;所述第五寄存器中的數(shù)據(jù)的初始值為零,所述第六寄存器用于存儲(chǔ)所述第三數(shù)據(jù),所述第三數(shù)據(jù)的取值為2的整數(shù)次冪;S8、將所述第三寄存器中的數(shù)據(jù)輸出。本發(fā)明還提供了一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法,包括以下步驟:S1、讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第一隨機(jī)存儲(chǔ)器;讀取第二寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第二隨機(jī)存儲(chǔ)器;所述第一寄存器用于存儲(chǔ)第一數(shù)據(jù),所述第二寄存器用于存儲(chǔ)第二數(shù)據(jù),所述第二數(shù)據(jù)的取值為以2為底數(shù),以第三數(shù)據(jù)的取值為指數(shù)的冪,所述第三數(shù)據(jù)為整數(shù);S2、調(diào)用取模模塊,對(duì)所述第一隨機(jī)存儲(chǔ)器和所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果分別寫入到第三寄存器和第四寄存器;所述取模模塊用于將所述第一隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),將所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為被模數(shù),進(jìn)行取模運(yùn)算;S3、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第三隨機(jī)存儲(chǔ)器和第四隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第五隨機(jī)存儲(chǔ)器;S4、調(diào)用模加模塊,對(duì)所述第三隨機(jī)存儲(chǔ)器、所述第四隨機(jī)存儲(chǔ)器和所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述模加模塊用于將所述第三隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第四隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為加數(shù),將所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),進(jìn)行模加運(yùn)算;S5、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第六隨機(jī)存儲(chǔ)器和第七隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第八隨機(jī)存儲(chǔ)器;S6、調(diào)用蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述蒙哥馬利模乘器用于將所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù)、所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)分別作為第一輸入?yún)?shù)、第二輸入?yún)?shù)和第三輸入?yún)?shù),進(jìn)行模乘運(yùn)算;S7、判斷第五寄存器中的數(shù)據(jù)是否等于所述第六寄存器中的數(shù)據(jù)的長(zhǎng)度,如果是,則執(zhí)行步驟S9 ;否則,執(zhí)行步驟S8 ;所述第五寄存器中的數(shù)據(jù)的初始值為1,所述第六寄存器用于存儲(chǔ)所述第三數(shù)據(jù),所述第三數(shù)據(jù)的取值為2的整數(shù)次冪;S8、將所述第五寄存器中的數(shù)據(jù)加1,將得到的結(jié)果作為更新后的所述第五寄存器中的數(shù)據(jù),并返回步驟S5;S9、將所述第三寄存器中的數(shù)據(jù)輸出。本發(fā)明實(shí)施例的技術(shù)方案,使用蒙哥馬利模乘器對(duì)數(shù)據(jù)進(jìn)行迭代運(yùn)算,得到預(yù)計(jì)算結(jié)果,從而提高了數(shù)據(jù)處理速度。
圖1為本發(fā)明實(shí)施例一中的一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法流程圖;圖2為本發(fā)明實(shí)施例二中的一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法流程圖;圖3為本發(fā)明實(shí)施例三中的一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法流程圖;圖4為本發(fā)明實(shí)施例四中的一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法流程圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本實(shí)施例提供了 一種基于蒙哥馬利模乘的數(shù)據(jù)處理方法,CPU (CentralProcessing Unit,中央處理器)在數(shù)據(jù)處理過(guò)程中,可調(diào)用取模模塊、模加模塊和蒙哥馬利模乘器,其中,取模模塊用于將第一隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),將第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為被模數(shù),進(jìn)行取模運(yùn)算;模加模塊用于將第三隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和第四隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為加數(shù),將第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),進(jìn)行模加運(yùn)算;蒙哥馬利模乘器用于將第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù)、第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)分別作為第一輸入?yún)?shù)、第二輸入?yún)?shù)和第三輸入?yún)?shù),進(jìn)行模乘運(yùn)算。此外,本實(shí)施例中,第一寄存器用于存儲(chǔ)第一數(shù)據(jù)N,第二寄存器用于存儲(chǔ)第二數(shù)據(jù)R=2n,η為整數(shù),第三寄存器、第四寄存器和第五寄存器用于存儲(chǔ)數(shù)據(jù)處理過(guò)程中的中間數(shù)據(jù),第六寄存器用于存儲(chǔ)第三數(shù)據(jù),該第三數(shù)據(jù)為模長(zhǎng)η。如圖1所示,為本發(fā)明實(shí)施例一中的一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法流程圖,包括以下步驟:步驟101,讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第一隨機(jī)存儲(chǔ)器;讀取第二寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第二隨機(jī)存儲(chǔ)器。步驟102,調(diào)用取模模塊,對(duì)第一隨機(jī)存儲(chǔ)器和第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果分別寫入到第三寄存器和第四寄存器。本實(shí)施例中,調(diào)用取模模塊進(jìn)行運(yùn)算后,第三寄存器中的數(shù)據(jù)記為W,第四寄存器中的數(shù)據(jù)記為 S,且 S=W=R mod No 例如,N 為 0xD99E413375024660171E3AB08CA00A3ElAA4985BEAAF8AC09F892DA9C61915945C7B4D72849EC1CD747586AB780D0B171FD8C27A5688A2E085AF6C50687AE3E0997238134D7DA34B96B8B7C0C993B4F1DF3FF6D46826460E13B0E8FAFA0BD59B2843627A4B8B253C5873FA87720D28DC3021A1898CF7DE8B4BC7525086CBFFE7CD1176663EC8EE958D59C94D60010E2F6063D5108049931454D00985B478064C2607DEB977D973C7750A19B2BC65DA102DD0A371, R 為 0x1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,則 W 和 S 的取值均為 0X2661BECC8AFDB99FE8E1C54F735FF5C1E55B67A41550753F6076D25639E6EA6BA384B28D7B613E328B8A795487F2F4E8E0273D85A9775D1F7A5093AF97851C1F668DC7ECB2825CB46947483F366C4B0E20C0092B97D9B9F1EC4F170505F42A64D7BC9D85B474DAC3A78C05788DF2D723CFDE5E7673082174B438ADAF7934001832EE8999C137116A72A636B29FFEF1D09F9C2AEF7FB66CEBAB2FF67A4B87F9B3D9F8214688268C388AF5E64D439A25EFD22F5C8F0步驟103,讀取第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第三隨機(jī)存儲(chǔ)器和第四隨機(jī)存儲(chǔ)器;讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第五隨機(jī)存儲(chǔ)器。步驟104,調(diào)用模加模塊,對(duì)第三隨機(jī)存儲(chǔ)器、第四隨機(jī)存儲(chǔ)器和第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果寫入到第三寄存器。本實(shí)施 例中,調(diào)用模加模塊進(jìn)行運(yùn)算后,可得到運(yùn)算結(jié)果(R mod N)+ (R mod N)mod N=2R mod N,第三寄存器中的數(shù)據(jù)W被更新為2R mod N。例如,更新后的第三寄存器中的數(shù)據(jù) W 的取值為 0x4CC37D9915FB733FDlC38A9EE6BFEB83CAB6CF482AA0EA7EC0EDA4AC73CDD4D74709651AF6C27C651714F2A90FE5E9D1C04E7B0B52EEBA3EF4A1275F2F0A383ECD1B8FD96504B968D28E907E6CD8961C418012572FB373E3D89E2E0A0BE854C9AF793B0B68E9B5874F180AF11BE5AE479FBCBCECE61042E968715B5EF268003065DD1333826E22D4E54C6D653FFDE3A13F3855DEFF6CD9D7565FECF4970FF367B3F0428D104D187115EBCC9A87344BDFA45EB91E。步驟105,對(duì)第五寄存器中的數(shù)據(jù)進(jìn)行初始化。優(yōu)選地,本實(shí)施例中,可以將第五寄存器中的數(shù)據(jù)設(shè)置為I。步驟106,根據(jù)第五寄存器中的數(shù)據(jù),從第六寄存器中讀取相應(yīng)位的數(shù)據(jù)。具體地,可以根據(jù)第五寄存器中的數(shù)據(jù)的取值,確定第六寄存器中的讀取位置,根據(jù)該位置從第六寄存器中讀取相應(yīng)位的數(shù)據(jù)。優(yōu)選地,本實(shí)施例中,可以根據(jù)第五寄存器中的數(shù)據(jù)得到需要讀取的數(shù)據(jù)在第六寄存器中的位序,并根據(jù)該位序從第六寄存器中讀取I比特位(bit)的數(shù)據(jù),其中,位序?yàn)榈诹拇嫫髦械母鱾€(gè)比特位數(shù)據(jù)在第六寄存器中的位置序號(hào)。例如,當(dāng)?shù)诹拇嫫髦械臄?shù)據(jù) n=nk*2k+nk-l*2H+…+11^21+…或 0)時(shí),轉(zhuǎn)換成二進(jìn)制為(nknk_r..rv..H1Iici)2,其中,nk、Iv1、Ii1、Ii1和nQ的位序分別為k、k_l、1、l和O ;第五寄存器中的數(shù)據(jù)為I時(shí),根據(jù)該數(shù)據(jù)讀取到的相應(yīng)位的數(shù)據(jù)為最低位IV第五寄存器中的數(shù)據(jù)為k+Ι時(shí),根據(jù)該數(shù)據(jù)讀取到的相應(yīng)位的數(shù)據(jù)為最高位nk。本實(shí)施例中,第六寄存器中的數(shù)據(jù)η的取值為1440,其二進(jìn)制格式為(101 10100000) 2,初始化后,第五寄存器中的數(shù)據(jù)為I時(shí),第一次讀取到的數(shù)據(jù)為最低位O。步驟107,判斷最近一次從第六寄存器中讀取到的數(shù)據(jù)的取值是否為零,如果為零,則執(zhí)行步驟108,否則,執(zhí)行步驟111。步驟108,讀取第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第六隨機(jī)存儲(chǔ)器和第七隨機(jī)存儲(chǔ)器;讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第八隨機(jī)存儲(chǔ)器。步驟109,調(diào)用蒙哥馬利模乘器,對(duì)第六隨機(jī)存儲(chǔ)器、第七隨機(jī)存儲(chǔ)器和第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新第三寄存器中的數(shù)據(jù)。本實(shí)施例中,將蒙哥馬利模乘器的三個(gè)輸入?yún)?shù)分別設(shè)置為第三寄存器中的數(shù)據(jù)W、第三寄存器中的數(shù)據(jù)W和第一寄存器中的數(shù)據(jù)N,可模乘得到MontMul (W,W,N)=ff*ff*R_1mod N,第三寄存器中的數(shù)據(jù)W被更新為W=KW=Ktr1Iiiod N。例如,讀取到的數(shù)據(jù)為Iitl時(shí),第三寄存器中的數(shù)據(jù)W被更新為0x9986FB322BF6E67FA387153DCD7FD707956D9E905541D4FD81DB4958E79BA9AE8E12CA35ED84F8CA2E29E5521FCBD3A3809CF616A5DD747DE9424EBE5E14707D9A371FB2CA0972D1A51D20FCD9B12C38830024AE5F66E7C7B13C5C1417D0A9935EF27616D1D36B0E9E3015E237CB5C8F3F7979D9CC2085D2D0E2B6BDE4D00060CBBA266704DC45A9CA98DACA7FFBC7427E70ABBDFED9B3AEACBFD9E92E1FE6CF67E0851A209A30E22BD799350E6897BF48BD723C ;讀取到的數(shù)據(jù)為Ii1時(shí),第三寄存器中的數(shù)據(jù)W被更新為0xB2DF6A61C 70D3E5FDFDF961CBF47A2206D49897FA83E74C85ACA10123C7B917F548DF2ACD65F8DCFBC87F18F15385FC2C25365EA648C3699AA6258A75BFA3535F80EA48D2A84AF67031471D39D46FE4D80A510AD4F13029D8F9E5A6B2AFB172B431366B03761C1C7D86279FB1320849DA2A45416925A34ABFC365685A801B394C5ACCF95DF397C0FAFD88F3FED00AB38FB04D6FAD3A892095F54994F8F8EA5537256F592B5DBF9C54A316EC0D6AADCC754820E ;讀取到的數(shù)據(jù)為n2時(shí),第三寄存器中的數(shù)據(jù)W被更新為0x20ED567F6C534104D174FE6AA7D3F4FAAC78DBED0F99DB846BB54F621481A08F4305F05A1156216E11D0A863D8A9F5CF8E23562841587E02D0BDA575278210EB94B4114DE347001FC8CFF252FD543F9C81CAC8418AFFA172D8FE10E80015D891A8C536352D65380BFFA26EBEE686F51B68751145408F5637E6A4375182241C73E277C9C82DBF7A28CD6E50061EC2524BAA9E7B99297E11184764CDCACEE0987748BF1FEE1552DE7B631FC8D87C3E9AFA21AFD423 ;讀取到的數(shù)據(jù)為n3時(shí),第三寄存器中的數(shù)據(jù)W被更新為0x9FD8DlC8F4EA928E0681B472F4337574846D4F6AC3CCEBD406F29AE119E75B3D4BA2DB11A690A99287366664D8062A1F69294A188035D57CE59B6137FFD3183DED1CFB05C659E29070870C5F6852C09AA7499E0389F30CC211CE52BEF816DCA0CB3597062E90850A81378ECB99010AB950134AD5A28B2F3964A1198E21D4777A073235006DA6BE9A72FC24A2822A30A24FA9F8B673254342CDEC60F616C787FB19F4DE8D88974BC7C04907F4477C9BBAE2DBE03A ;讀取到的數(shù)據(jù)為n4時(shí),第三寄存器中的數(shù)據(jù)W被更新為0xl9B89EFA54C8B5C69A2B02086FAE826F65194FDCD7132643A1FCA3CB32697FECB16086B2E50C13A98AE7A929E577FEDEDCCF0FE21C89A6A954D2B7F4C41815A71B6168B097BC8CE38236A6C267F3F5E3EC3FE92ADFD0FECBA2BD8EA8674C81948812864F6242BBE6EE4857F4EC340420B6E44FA5A61C6789C351C7B16393CD8B5F5EB78CBB8B4D56AF4BD2A3AA2CF706E458024A386020D849D7870656AAEF0D9AAEA154EC42C08B0AB00426739C7C94DE0CA196 ;讀取到的數(shù)據(jù)為n5時(shí),第三寄存器中的數(shù)據(jù)W被更新為0x737AD2CCAEA97D279F22DE4C575118ECBF39F9E41F1BDA8C740677C14A8FBAA19CBB5DA2125FB13BBD3815EB7DA6D6454A4716A0E71BF59F578DE159809F82EF52AA42DD0452155DF6AE438506C7C7B0C28921EA7CE4EB5BD6C88362FF45F9DF3999B591A03AEC9B305B0753E40AC3928973836BF12119DA294FF815EAF2F8ACFB2B436AFA9BED27EF69C68AB81A059BC7BD678A82BCD2CEF9DFF577CC8F33E1B9822B8E3F0D5804A225A44B1EE53CB6EEF93848 ;讀取到的數(shù)據(jù)為n6時(shí),第三寄存器中的數(shù)據(jù)W被更新為0xD33D4904E41AC66FB543E22D002A68946486D522E59CCD6C1C59A81ED619FA6D095A98DDC04A47B42576D3C91DA81498F59B59CBB1753C7603979261A33A7208167F0F1CEA375139E8DD99D04F2423E4A6EE10F39AE347A0AEB5444625AD2574545E236EEA5174DEBF82EFF3DC5405971FC1212EC726E49B2BE7CE6AF543ACD508872EA4DC5B38A2C2742E4AA80A7A9D63B190D39B3C095753D1EBE8725A9B711437D93B585539FB3948163775F8C15EAD65C935 ;讀取到的數(shù)據(jù)為n7時(shí),第三寄存器中的數(shù)據(jù)W被更新為0xlAD2EA8F41E8E7D6C06D04317F406C438950CF08918357FFB4BA6C14372740E319D5FB082ECDD03D741FF45168AA01EA8112D1F1BE57EDE660D1DD510D1B1E9F4C4355D690F864BC2644247AD1E254EF85C106ED14FAC18327BB8DD7441D0FB68D5F1B0E761988D72C87843803896D0B76A5EB674C9D4384BDA76861713AE8962AD204631EC1ABA0843F66E49E6D2EFE5DBA80A95DF371990BF14A86DC5AD5F67125B9696DF601E04DE091214B5F82F5B47457EF ;讀取到的數(shù)據(jù)為n8時(shí),第三寄存器中的數(shù)據(jù)W被更新為0x4AF096BR)6BE71B157C1B12A7A39EC6FD9DDBBC4E8B8C5FA317562B31DFB0FED8C71B4D37D5F9F000FCC0BFDD49CBA1591D619F615098ED7D5788662AEEA2443CE8F3ABD8B766E928D9CF9F0D0E94AA0B7DI79DFF17I5AA215B400150F331BA33514DF597D677D8490E0E0C73219E0907600EB08A876A0F49AAB3B14E2F728C54192A8480B216EC1BCE54B5DADFC1581AC04FCB87ABFFDB1E854511242AB801366BFE0C01C5639878D658BDE44CC6237DB4330BD ;讀取到的數(shù)據(jù)為n9時(shí),第三寄存器中的數(shù)據(jù)W被更新為0x956CB88B112FlDCB30309A00C50A3098B51AABC48B94E89DDF0F8582DCB07371D7194494E08EA453A528616950ABB1B65176956399E6FBC74BD334812D9DA3D3B5B229BCD643307D7E52DADC3E64C61874EB307BD62CB6A77E4AA893A2FCF9A64759D9B88E6E676511AC5101F1F358231652B00D78AA05AA0AFB71F161AA89CF0DEAE77CCD412441620B35E3D3D3728CAA84368ACDF33538BE766BAFA60F6CD40C867FB024363D1489B87D604936EEB7D44034F5 ;讀取到的數(shù)據(jù)為n1(l時(shí),第三寄存器中的數(shù)據(jù)W被更新為0xCDE0AC6F912257FF9A51B338A27E951CBE0A5B3A790CA56E2488CED7EDCA526900012803FCC3A6EBF9819D5490F2438DC50DB41B48B19C2DE714895E8853334269ED374748BB9EE99B81FB6A7CC97B64BD1CDB14AA48C1677BB46D7C06770FA8608E0D74984DE085CE5CF0ADDB3EE4271D8E93D9949D553E34456CA8A9E41DA95744EB840A81498E081193048734C370CDECECBE976FE7A9622B40E805A7881184C2F7FE85357CA13FB01C2EB1A7159ED229CC99。
步驟110,對(duì)第五寄存器中的數(shù)據(jù)進(jìn)行更新,并返回步驟106。具體地,可以將第五寄存器中的數(shù)據(jù)加預(yù)設(shè)步長(zhǎng),例如1,作為更新后的第五寄存器中的數(shù)據(jù)。步驟111,讀取第四寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取第三寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取第一寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)。步驟112,調(diào)用蒙哥馬利模乘器,對(duì)第六隨機(jī)存儲(chǔ)器、第七隨機(jī)存儲(chǔ)器和第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新第四寄存器中的數(shù)據(jù)。本實(shí)施例中,將蒙哥馬利模乘器的三個(gè)輸入?yún)?shù)分別設(shè)置為第四寄存器中的數(shù)據(jù)S、第三寄存器中的數(shù)據(jù)W和第一寄存器中的數(shù)據(jù)N,可模乘得到MontMul (S,W,N)=S-W^R-1Hiod N,將模乘結(jié)果存儲(chǔ)到第四寄存器后,第四寄存器中的數(shù)據(jù)S被更新為S*W*
R 1Iiiod No讀取到的數(shù)據(jù)為n5時(shí),其取值為1,第四寄存器中的數(shù)據(jù)更新為0xl9B89EFA54C8B5C69A2B02086FAE826F65194FDCD7132643A1FCA3CB32697FECB16086B2E50C13A98AE7A929E577FEDEDCCF0FE21C89A6A954D2B7F4C41815A71B6168B097BC8CE38236A6C267F3F5E3EC3FE92ADFD0FECBA2BD8EA8674C81948812864F6242BBE6EE4857F4EC340420B6E44FA5A61C6789C351C7B16393CD8B5F5EB78CBB8B4D56AF4BD2A3AA2CF706E458024A386020D849D7870656AAEF0D9AAEA154EC42C08B0AB00426739C7C94DE0CA196 ;讀取到的數(shù)據(jù)為n7時(shí),其取值為1,第四寄存器中的數(shù)據(jù)更新為0xCDA46337DD938E5CBBE5BD34A433D49223AEDC489354AEA5961317A372FF02A2DE00FC155C91FD4629CECF48ABA3E6B5FB6E47D192931C41F5D22579A187F99061FBA714BE6C8BF44B6E2F4DA3F9D549B7CD638227182DE2D309405178EC7DD8DE2C05EAD5F073636C11A56FD0A7E6FC77847B4090EF0F13EE529A47CB9003EC4D96796ABAB10F9E9EE64D02EF6B8ED46DB07E0C32A6D398DB4126A61A592E7DDE02215134E7AE35902F525D3A96C5B45CEDEAA4 ;讀取到的數(shù)據(jù)為n8時(shí),其取值為1,第四寄存器中的數(shù)據(jù)更新為0xBCA266809D0887DFDD16887E3D061AFD601DED198DE11BA3196241D5C647615002B30D1FA2AC61D8EE8A2493ABD4D0D8C48D6255F7CC043070E385A4DA0D1A0EC746A9BA501D403162D185AD4A69C619B60B217060A9B23F41296DF95852A4373DD5D71D7FCCF7DD9E3F26432F41CF6CA2D726EF5B49C63FF57D535C58BB42D87BB258E6804FF5730CF3D71276305A0630359656CB5DA6E5A095A45F00F724B6B181C37A9830E456947B3AC5F249D4D723D6E34D ;讀取的數(shù)據(jù)為n1Q時(shí),其取值為1,第四寄存器中的數(shù)據(jù)更新為0xB83C9F28ClE3054ABC74607F8D0E9BF7749570117F35B79B891169D963F693E928F26FC3422F7EB469E4360872C2C1122A27EA331D8EA13B559CF48F5F60573FDCAAAA8F83103CD6A5FF4E6AB3B6F6A4C2C073CEBC2E12EEC89CF8FB0CD4EF713C354FE5C3D7E60E5D2DA4D7C82D181B4B1DEF3DE585A616398CACE990EBDAF23C441DD72D89D1A295163B6337F5AFB59FA35E77FA7EDF391F257220D0D5BB61395D26826690AD1297D714B5D114A2CBD0A814E7。
步驟113,判斷最近一次從第六寄存器中讀取到的數(shù)據(jù)是否為第六寄存器中位于最高位的數(shù)據(jù),如果是,則執(zhí)行步驟114 ;否則,返回步驟108。具體地,可以判斷第五寄存器中的數(shù)據(jù)的取值是否等于第六寄存器中的數(shù)據(jù)的長(zhǎng)度,如果是,則確定讀取到的數(shù)據(jù)為第六寄存器中位于最高位的數(shù)據(jù);否則,確定讀取到的數(shù)據(jù)不是第六寄存器中位于最高位的數(shù)據(jù)。步驟114,將第四寄存器中的數(shù)據(jù)輸出。本實(shí)施例中,輸出的運(yùn)算結(jié)果為0XB83C9F28C1E3054ABC74607F8D0E9BF7749570117F35B79B891169D963F693E928F26FC3422F7EB469E4360872C2C1122A27EA331D8EA13B559CF48F5F60573FDCAAAA8F83103CD6A5FF4E6AB3B6F6A4C2C073CEBC2E12EEC89CF8FB0CD4EF713C354FE5C3D7E60E5D2DA4D7C82D181B4B1DEF3DE585A616398CACE990EBDAF23C441DD72D89D1A295163B6337F5AFB59FA35E77FA7EDF391F257220D0D5BB61395D26826690AD1297D714B5D114A2CBD0A814E7。本發(fā)明實(shí)施例的技術(shù)方案,根據(jù)模長(zhǎng)對(duì)應(yīng)的二進(jìn)制數(shù)的各個(gè)數(shù)據(jù)位的取值,通過(guò)蒙哥馬利模乘器進(jìn)行迭代運(yùn)算,能夠在模長(zhǎng)為任意值時(shí),得到大數(shù)預(yù)計(jì)算結(jié)果,從而提高了數(shù)據(jù)處理速度。需要說(shuō)明的是,在本發(fā)明的其他實(shí)施方式中,也可以將第五寄存器中的數(shù)據(jù)初始化為除I之外的其他數(shù)值,該數(shù)值與第六寄存器中的最低位的數(shù)據(jù)的位置相對(duì)應(yīng);還可以在對(duì)第五寄存器中的數(shù)據(jù)更新時(shí),對(duì)該數(shù)據(jù)加上除I之外的其他數(shù)值,根據(jù)更新之后的第五寄存器中的數(shù)據(jù)讀取到的第六寄存器中的數(shù)據(jù),比根據(jù)更新之前的第五寄存器中的數(shù)據(jù)讀取到的第六寄存器中的數(shù)據(jù)高一位,同樣可以實(shí)現(xiàn)本發(fā)明的發(fā)明目的。如圖2所示為,本發(fā)明實(shí)施例二中的一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法流程圖,本實(shí)施例中,第六寄存器中的存儲(chǔ)的模長(zhǎng)n=2k,實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法包括以下步驟:步驟201,讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第一隨機(jī)存儲(chǔ)器;讀取第二寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第二隨機(jī)存儲(chǔ)器。步驟202,調(diào)用取模模塊,對(duì)第一隨機(jī)存儲(chǔ)器和第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果寫入到第三寄存器。本實(shí)施例中,調(diào)用取模模塊進(jìn)行運(yùn)算后,第三寄存器中的數(shù)據(jù)記為W=R mod N。步驟203,讀取第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第三隨機(jī)存儲(chǔ)器和第四隨機(jī)存儲(chǔ)器;讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第五隨機(jī)存儲(chǔ)器。步驟204,調(diào)用模加模塊,對(duì)第三隨機(jī)存儲(chǔ)器、第四隨機(jī)存儲(chǔ)器和第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果寫入到第三寄存器。本實(shí)施例中,調(diào)用模加模塊進(jìn)行運(yùn)算后,可得到運(yùn)算結(jié)果(R mod N)+ (R mod N)mod N=2R mod N,第三寄存器中的數(shù)據(jù)W被更新為2R mod N。步驟205,對(duì)第五寄存器中的數(shù)據(jù)進(jìn)行初始化。優(yōu)選地,本實(shí)施例中,可以將第五寄存器中的數(shù)據(jù)設(shè)置為零。步驟206,讀取第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第六隨機(jī)存儲(chǔ)器和第七隨機(jī)存儲(chǔ)器;讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第八隨機(jī)存儲(chǔ)器。步驟207,調(diào)用蒙哥馬利模乘器,對(duì)第六隨機(jī)存儲(chǔ)器、第七隨機(jī)存儲(chǔ)器和第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新第三寄存器中的數(shù)據(jù)。本實(shí)施例中,將蒙哥馬利模乘器的三個(gè)輸入?yún)?shù)分別設(shè)置為第三寄存器中的數(shù)據(jù)W、第三寄存器中的數(shù)據(jù)W和第一寄存器中的數(shù)據(jù)N,可模乘得到MontMul (W,W,N) =W*W*R-1Hiod N,將模乘結(jié)果存儲(chǔ)到第三寄存器后,第三寄存器中的數(shù)據(jù)W被更新為W*W* Ir1Hiod N。步驟208,對(duì)第五寄存器中的數(shù)據(jù)進(jìn)行更新。具體地,可以將第五寄存器中的數(shù)據(jù)加1,作為更新后的第五寄存器中的數(shù)據(jù)。步驟209,判斷第五寄存器中的數(shù)據(jù)是否等于第六寄存器中的數(shù)據(jù)的長(zhǎng)度,如果是,則執(zhí)行步驟210 ;否則,返回步驟206。步驟210,將第三寄存器中的數(shù)據(jù)輸出。本發(fā)明實(shí)施例的技術(shù)方案,通過(guò)蒙哥馬利模乘器進(jìn)行迭代運(yùn)算,能夠在模長(zhǎng)為2k時(shí),得到大數(shù)預(yù)計(jì)算結(jié)果,從而提高了數(shù)據(jù)處理速度。
需要說(shuō)明的是,在本發(fā)明的其他實(shí)施方式中,也可以將第五寄存器中的數(shù)據(jù)初始化為1,執(zhí)行完步驟206至步驟207后,執(zhí)行步驟209,判斷第五寄存器中的數(shù)據(jù)是否等于第六寄存器中的數(shù)據(jù)的長(zhǎng)度,如果是,則將第三寄存器中的數(shù)據(jù)作為運(yùn)算結(jié)果輸出;否則,將第五寄存器中的數(shù)據(jù)加1,作為更新后的第五寄存器中的數(shù)據(jù),執(zhí)行步驟206至步驟207,并執(zhí)行步驟209,依次循環(huán),同樣可以實(shí)現(xiàn)本發(fā)明的發(fā)明目的。如圖3所示為,本發(fā)明實(shí)施例三中的一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法流程圖,包括以下步驟:步驟301,讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第一隨機(jī)存儲(chǔ)器;讀取第二寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第二隨機(jī)存儲(chǔ)器。步驟302,調(diào)用取模模塊,對(duì)第一隨機(jī)存儲(chǔ)器和第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果分別寫入到第三寄存器和第四寄存器。本實(shí)施例中,調(diào)用取模模塊進(jìn)行運(yùn)算后,第三寄存器中的數(shù)據(jù)記為W,第四寄存器中的數(shù)據(jù)記為S,且S=W=R mod No步驟303,讀取第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第三隨機(jī)存儲(chǔ)器和第四隨機(jī)存儲(chǔ)器;讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第五隨機(jī)存儲(chǔ)器。步驟304,調(diào)用模加模塊,對(duì)第三隨機(jī)存儲(chǔ)器、第四隨機(jī)存儲(chǔ)器和第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果寫入到第三寄存器。本實(shí)施例中,調(diào)用模加模塊進(jìn)行運(yùn)算后,可得到運(yùn)算結(jié)果(R mod N)+ (R mod N)mod N=2R mod N,第三寄存器中的數(shù)據(jù)W被更新為2R mod N。步驟305,對(duì)第五寄存器中的數(shù)據(jù)進(jìn)行初始化。優(yōu)選地,本實(shí)施例中,可以將第五寄存器中的數(shù)據(jù)設(shè)置為零。步驟306,根據(jù)第五寄存器中的數(shù)據(jù),從第六寄存器中讀取相應(yīng)位的數(shù)據(jù)。具體地,可以根據(jù)第五寄存器中的數(shù)據(jù)的取值,確定第六寄存器中的讀取位置,根據(jù)該位置從第六寄存器中讀取相應(yīng)的數(shù)據(jù)。優(yōu)選地,本實(shí)施例中,可以將第五寄存器中的數(shù)據(jù)作為需要讀取的數(shù)據(jù)在第六寄存器中的位序,從第六寄存器中讀取I比特位(bit)的數(shù)據(jù),其中,位序?yàn)榈诹拇嫫髦械母鱾€(gè)比特位數(shù)據(jù)在第六寄存器中的位置序號(hào)。例如,當(dāng)?shù)诹拇嫫髦械臄?shù)據(jù)Γ^η,^+η,-Ι^Η+...+!^#+...+1^21+ ° Ui=I 或0)時(shí),轉(zhuǎn)換成二進(jìn)制為(nknk_r“iv..]!-。);^其中,nk、Πη、叫、Ii1和η0的位序分別為k、k_l、1、I和O ;第五寄存器中的數(shù)據(jù)為O時(shí),根據(jù)該數(shù)據(jù)讀取到的相應(yīng)位的數(shù)據(jù)為最低位IV第五寄存器中的數(shù)據(jù)位為k時(shí),根據(jù)該數(shù)據(jù)讀取到的相應(yīng)位的數(shù)據(jù)為最高位nk。
步驟307,判斷最近一次從第六寄存器中讀取到的數(shù)據(jù)的取值是否為零,如果為零,則執(zhí)行步驟310,否則,執(zhí)行步驟308。步驟308,將第三寄存器中的數(shù)據(jù)寫入到第四寄存器。步驟309,判斷最近一次從第六寄存器中讀取到的數(shù)據(jù)是否為第六寄存器中位于最高位的數(shù)據(jù),如果是,則執(zhí)行步驟316 ;否則,執(zhí)行步驟310。步驟310,對(duì)第五寄存器中的數(shù)據(jù)進(jìn)行更新,根據(jù)第五寄存器中的數(shù)據(jù),從第六寄存器中讀取相應(yīng)位的數(shù)據(jù)。具體地,可以將第五寄存器中的數(shù)據(jù)加1,作為更新后的第五寄存器中的數(shù)據(jù)。步驟311,讀取第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第六隨機(jī)存儲(chǔ)器和第七隨機(jī)存儲(chǔ)器;讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第八隨機(jī)存儲(chǔ)器。步驟312,調(diào)用蒙哥馬利模乘器,對(duì)第六隨機(jī)存儲(chǔ)器、第七隨機(jī)存儲(chǔ)器和第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新第三寄存器中的數(shù)據(jù)。本實(shí)施例中,將蒙哥馬利模乘器的三個(gè)輸入?yún)?shù)分別設(shè)置為第三寄存器中的數(shù)據(jù)W、第三寄存器中的數(shù)據(jù)W和第一寄存器中的數(shù)據(jù)N,可模乘得到MontMul (W,W,N)=W^R-1H1Od N,將模乘結(jié)果存儲(chǔ)到第三寄存器后,第三寄存器中的數(shù)據(jù)W被更新為
R 1Iiiod No步驟313,判斷最近一次從第六寄存器中讀取到的數(shù)據(jù)的取值是否為零,如果為零,則返回步驟310,否則,執(zhí)行步驟314。
步驟314,讀取第四寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第六隨機(jī)存儲(chǔ)器;讀取第三寄存器中的數(shù)據(jù),根據(jù)讀取到的數(shù)據(jù)更新第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取第一寄存器中的數(shù)據(jù),根據(jù)讀取到的數(shù)據(jù)更新第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)。步驟315,調(diào)用蒙哥馬利模乘器,對(duì)第六隨機(jī)存儲(chǔ)器、第七隨機(jī)存儲(chǔ)器和第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新第四寄存器中的數(shù)據(jù),并返回步驟309。本實(shí)施例中,將蒙哥馬利模乘器的三個(gè)輸入?yún)?shù)分別設(shè)置為第四寄存器中的數(shù)據(jù)S、第三寄存器中的數(shù)據(jù)W和第一寄存器中的數(shù)據(jù)N,可模乘得到MontMul (S,W,N) =S*W*R-1Hiod N,將模乘結(jié)果存儲(chǔ)到第四寄存器后,第四寄存器中的數(shù)據(jù)S被更新為S*W* R-1Hiod N。步驟316,將第四寄存器中的數(shù)據(jù)輸出。本發(fā)明實(shí)施例的技術(shù)方案,根據(jù)模長(zhǎng)對(duì)應(yīng)的二進(jìn)制數(shù)的各個(gè)數(shù)據(jù)位的取值,通過(guò)蒙哥馬利模乘器進(jìn)行迭代運(yùn)算,能夠在模長(zhǎng)為任意值時(shí),得到大數(shù)預(yù)計(jì)算結(jié)果,從而提高了數(shù)據(jù)處理速度。需要說(shuō)明的是,在本發(fā)明的其他實(shí)施方式中,也可以將第五寄存器中的數(shù)據(jù)初始化為除零之外的其他數(shù)值,該數(shù)值與第六寄存器中的最低位的數(shù)據(jù)的位置相對(duì)應(yīng);還可以在對(duì)第五寄存器中的數(shù)據(jù)更新時(shí),對(duì)該數(shù)據(jù)加上除I之外的其他數(shù)值,根據(jù)更新之后的第五寄存器中的數(shù)據(jù)讀取到的第六寄存器中的數(shù)據(jù),比根據(jù)更新之前的第五寄存器中的數(shù)據(jù)讀取到的第六寄存器中的數(shù)據(jù)高一位,同樣可以實(shí)現(xiàn)本發(fā)明的發(fā)明目的。如圖4所示為,本發(fā)明實(shí)施例四中的一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法流程圖,包括以下步驟:步驟401,讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第一隨機(jī)存儲(chǔ)器;讀取第二寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第二隨機(jī)存儲(chǔ)器。
步驟402,調(diào)用取模模塊,對(duì)第一隨機(jī)存儲(chǔ)器和第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果分別寫入到第三寄存器和第四寄存器。本實(shí)施例中,調(diào)用取模模塊進(jìn)行運(yùn)算后,第三寄存器中的數(shù)據(jù)記為W,第四寄存器中的數(shù)據(jù)記為 S,且 S=W=R mod No 例如,N 為 0xD99E413375024660171E3AB08CA00A3ElAA4985BEAAF8AC09F892DA9C61915945C7B4D72849EC1CD747586AB780D0B171FD8C27A5688A2E085AF6C50687AE3E0997238134D7DA34B96B8B7C0C993B4F1DF3FF6D46826460E13B0E8FAFA0BD59B2843627A4B8B253C5873FA87720D28DC3021A1898CF7DE8B4BC7525086CBFFE7CD1176663EC8EE958D59C94D60010E2F6063D5108049931454D00985B478064C2607DEB977D973C7750A19B2BC65DA102DD0A371,R 為 0x1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,則 W 和 S 的取值均為 0X2661BECC8AFDB99FE8E1C54F735FF5C1E55B67A41550753F6076D25639E6EA6BA384B28D7B613E328B8A795487F2F4E8E0273D85A9775D1F7A5093AF97851C1F668DC7ECB2825CB46947483F366C4B0E20C0092B97D9B9F1EC4F170505F42A64D7BC9D85B474DAC3A78C05788DF2D723CFDE5E7673082174B438ADAF7934001832EE8999C137116A72A636B29FFEF1D09F9C2AEF7FB66CEBAB2FF67A4B87F9B3D9F8214688268C388AF5E64D439A25EFD22F5C8F0步驟403,讀取第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第三隨機(jī)存儲(chǔ)器和第四隨機(jī)存儲(chǔ)器;讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第五隨機(jī)存儲(chǔ)器。步驟404,調(diào)用模加模塊,對(duì)第三隨機(jī)存儲(chǔ)器、第四隨機(jī)存儲(chǔ)器和第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果寫入到第三寄存器。本實(shí)施例中,調(diào)用模加模塊進(jìn)行運(yùn)算后,可得到運(yùn)算結(jié)果(R mod N)+ (R mod N)mod N=2R mod N,第三寄存器中的數(shù)據(jù)W被更新為2R mod N。本實(shí)施例中,更新后的第三寄存器中的數(shù)據(jù)W的取值為0x4CC37D9915FB733FDlC38A9EE6BFEB83CAB6CF482AA0EA7EC0EDA4AC73CDD4D74709651AF6C27C651714F2A90FE5E9D1C04E7B0B52EEBA3EF4A1275F2F0A383ECD1B8FD96504B968D28E907E6CD8961C418012572FB373E3D89E2E0A0BE854C9AF793B0B68E9B5874F180AF11BE5AE479FBCBCECE61042E968715B5EF268003065DD1333826E22D4E54C6D653FFDE3A13F3855DEFF6CD9D7565FECF4970FF367B3F0428D104D187115EBCC9A87344BDFA45EB9IE ο步驟405,對(duì)第五寄存器中的數(shù)據(jù)進(jìn)行初始化。優(yōu)選地,本實(shí)施例中,可以將第五寄存器中的數(shù)據(jù)設(shè)置為第六寄存器中的數(shù)據(jù)的長(zhǎng)度。步驟406,根據(jù)第五寄存器中的數(shù)據(jù),從第六寄存器中讀取相應(yīng)位的數(shù)據(jù)。具體地,可以根據(jù)第五寄存器中的數(shù)據(jù)的取值,確定第六寄存器中的讀取位置,根據(jù)該位置從第六寄存器中讀取相應(yīng)的數(shù)據(jù)。優(yōu)選地,本實(shí)施例中,可以根據(jù)第五寄存器中的數(shù)據(jù)得到需要讀取的數(shù)據(jù)在第六寄存器中的位序,并根據(jù)該位序從第六寄存器中讀取I比特位(bit)的數(shù)據(jù),其中,位序?yàn)榈诹拇嫫髦械母鱾€(gè)比特位數(shù)據(jù)在第六寄存器中的位置序號(hào)。
例如,當(dāng)?shù)诹拇嫫髦械臄?shù)據(jù)+或O)時(shí),轉(zhuǎn)換成二進(jìn)制為(nknk_r“iv..]!-。);^其中,nk、Πη、叫、Ii1和η0的位序分別為k、k_l、
1、I和O ;第五寄存器中的數(shù)據(jù)為I時(shí),根據(jù)該數(shù)據(jù)讀取到的相應(yīng)位的數(shù)據(jù)為最低位IV第五寄存器中的數(shù)據(jù)為k+Ι時(shí),根據(jù)該數(shù)據(jù)讀取到的相應(yīng)位的數(shù)據(jù)為最高位nk。本實(shí)施例中,第六寄存器中的數(shù)據(jù)η的取值為1440,其二進(jìn)制格式為(101 10100000) 2,初始化后,第五寄存器中的數(shù)據(jù)為11時(shí),第一次讀取到的數(shù)據(jù)為I。步驟407,讀取第四寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第六隨機(jī)存儲(chǔ)器和第七隨機(jī)存儲(chǔ)器;讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第八隨機(jī)存儲(chǔ)器。步驟408,調(diào)用蒙哥馬利 模乘器,對(duì)第六隨機(jī)存儲(chǔ)器、第七隨機(jī)存儲(chǔ)器和第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新第四寄存器中的數(shù)據(jù)。本實(shí)施例中,將蒙哥馬利模乘器的三個(gè)輸入?yún)?shù)分別設(shè)置為第四寄存器中的數(shù)據(jù)S、第四寄存器中的數(shù)據(jù)S和第一寄存器中的數(shù)據(jù)N,可模乘得到MontMul (S,S,N)=S-S-R-1Hiod N,將模乘結(jié)果存儲(chǔ)到第四寄存器后,第四寄存器中的數(shù)據(jù)S被更新為S*S*
R 1Iiiod No例如,讀取到的數(shù)據(jù)為n1(l時(shí),更新后的第四寄存器中的數(shù)據(jù)為0x2661BECC8AFDB99FE8E1C54F735FF5C1E55B67A41550753F6076D25639E6EA6BA384B28D7B613E328B8A795487F2F4E8E0273D85A9775D1F7A5093AF97851C1F668DC7ECB2825CB46947483F366C4B0E20C0092B97D9B9F1EC4F170505F42A64D7BC9D85B474DAC3A78C05788DF2D723CFDE5E7673082174B438ADAF7934001832EE8999C137116A72A636B29FFEF1D09F9C2AEF7FB66CEBAB2FF67A4B87F9B3D9F8214688268C388AF5E64D439A25EFD22F5C8F ;讀取到的數(shù)據(jù)為n9時(shí),更新后的第四寄存器中的數(shù)據(jù)S為0x9986FB322BF6E67FA387153DCD7FD707956D9E905541D4FD81DB4958E79BA9AE8E12CA35ED84F8CA2E29E5521FCBD3A3809CF616A5DD747DE9424EBE5E14707D9A371FB2CA0972D1A51D20FCD9B12C38830024AE5F66E7C7B13C5C1417D0A9935EF27616D1D36B0E9E3015E237CB5C8F3F7979D9CC2085D2D0E2B6BDE4D00060CBBA266704DC45A9CA98DACA7FFBC7427E70ABBDFED9B3AEACBFD9E92E1FE6CF67E0851A209A30E22BD799350E6897BF48BD723C ;讀取到的數(shù)據(jù)為n8時(shí),更新后的第四寄存器中的數(shù)據(jù)S為0xB2DF6A61C5D70D3E5FDFDF961CBF47A2206D49897FA83E74C85ACA10123C7B917F548DF2ACD65F8DCFBC87F18F15385FC2C25365EA648C3699AA6258A75BFA3535F80EA48D2A84AF67031471D39D46FE4D80A510AD4F13029D8F9E5A6B2AFB172B431366B03761C1C7D86279FB1320849DA2A45416925A34ABFC365685A801B394C5ACCF95DF397C0FAFD88F3FED00AB38FB04D6FAD3A892095F54994F8F8EA5537256F592B5DBF9C54A316EC0D6AADCC754820E ;讀取到的數(shù)據(jù)為n7時(shí),更新后的第四寄存器中的數(shù)據(jù)S為0x83B559FDB14D041345D3F9AA9F4FD3EAB1E36FB43E676E11AED53D885206823D0C17C168455885B84742A18F62A7D73E388D58A10561F80B42F695D49E0843AE52D045378D1C007F233FC94BF550FE72072B21062BFE85CB63F843A000576246A314D8D4B594E02FFE89BAFB9A1BD46DA1D44515023D58DF9A90DD46089071CF89DF2720B6FDE8A335B940187B09492EAA79EE64A5F844611D93372B3B8261DD22FC7FB8554B79ED8C7F2361F0FA6BE886BF508C ;讀取到的數(shù)據(jù)為n6時(shí),更新后的第四寄存器中的數(shù)據(jù)S為0x022679CABF39B7DD61E056533B7B7BBA371BE1D0DD007BA47277561B1B3BD915EE138C634B04CFE96C05DFBAF7257E9B7186D1AA2A5F7800DBA36B3CC636393F1B4675E65C67A93B75D95B751291EE41D5A92FE35DBC53EED619E9AA1D8AF0B66906AD17C5956C8C1098B4084FD82DE72EA60D27C149F2C63EAE46BFB5A9E2F326588355E2CBD927CB8D336BEA5A8DE1382A0F953BCECFF7E8E67DF98FD8D6CB81C5BF5524E6B051956745414873E5C04DAA0CC1 ;讀取到的數(shù)據(jù)為n5時(shí),更新后的第四寄存器中的數(shù)據(jù)S為0xlABC6003530F5BF6FAF99131099398E735CDBFA97E81E5F22AE25E2C1091FE972F4CC1CE0514303E4C6002288744F614BB2E727D0016A4D06BD6843BF9039D13FA9904FD47457D3A7530BE02241C2579E9A404682790478E9E720BF409B96F2908FEC6ED58AC08CD4A39A6AF9F60CB234564F25341D7DCD9D7A375FA6328E3B63674F26A00F258357F69A4594D719CB34365D05376F3722D1F1E64A17C04F1B30334381D94E9CB91B929D14D9739074A2BA45E5C ;讀取到的數(shù)據(jù)為n4時(shí),更新后的第四寄存器中的數(shù)據(jù)S為0x8A7128R)EF38233D76C6D8AFBA66D0C2473B5F689344E19E7DEA9CEB7DCBAC9B5C7BDB9075052C77595E892754BD98B6E437FC212FF564D33A51F952230B997C066C0165712821EC0CD43B3063D4D331293B80E37D9FE28D447D29D510C40417796EEBF09DCE40240969D87E9B29608CE9479B72F989D02884CF0B54D2861DD96FC66FB6C52974CAB7288CB5CF927BDD4A70C5AA27F3E1BB2BF491D6C3C67FEF1C2F5716539F569535F1E601A4C90ED5E3D38EA5 ;讀取到的數(shù)據(jù)為n3時(shí),更新后的第四寄存器中的數(shù)據(jù)S為0x531BC239F295E4934C5AF1EF888563C5F0DA69A5B3F228983F89EDC6E3426D11944D372E299D28020DD9B0F0E613A3E90821CD5D81D1C8A21B6915F0A0274A73DCAB3E080D16581C3ACA2D604EAF0A347348D29B40B756A8196CFBBA737F2F2C1C7CE95D75C8AE953DBCB0FEAC60E7A71857074D41C4BBFC0F5528115CAAB9877292A206A97553F0AC735212B83858203754DF69D1042C07C888D30CBA570898D37F0C0565ADF0C7E16C9EA6411774CBCB39FDCA ;讀取到的數(shù)據(jù)為n2時(shí),更新后的第四寄存器中的數(shù)據(jù)S為0x0871B99B9478368B4A9AD8631C3E72E08A91D37611FD998D0517BF8757E0E5DA896A8AB60E53B8814CA9F38FE671FBC903059E4E37450546CAF563F65A7B644FDA8A206C8944157534F62E8D6AA548B138069FCD7389569C4D721BD7B9395A3379E0D41709DF4ED1BA93B8F2461B57D530959E69CE9B8591EF27CF0D5BA1BD1F8D446C8685F1DE91649351CFB0CEEC751E76F59A1E8CE702D4DFD9E20A8A263C7F36F4985A1BC08236CAF0CCFE95893670D5D406 ;讀取到的數(shù)據(jù)為Ii1時(shí),更新后的第四寄存器中的數(shù)據(jù)S為0x07010678BB199C55EA69B55807E60458299B2374A9137F6E61DE2749010B02232A67B08843C0F24CF146863C8457D7AF3508301D6A74686D402C8E4F4E99DD4C63FD9BF70CE8773E0919B98891080EB666B21621792BD0D02356A816CD6BCEE83F15C2AE86B08A081C35C3D6F14631BD80A061BC2I2B398BC0CE83A6A2F202B0898C2564AA9AF159E236F787B8747D31A82C5979E69534CF0BAF78F9A99A1AF99D82BC6922BF77D87F4C0E55E3793A2CC29E0C14 ;讀取到的數(shù)據(jù)為Iitl時(shí),更新后的第四寄存器中的數(shù)據(jù)S為0xB83C9F28ClE3054ABC74607F8D0E9BF7749570117F35B79B891169D963F693E928F26FC3422F7EB469E4360872C2C1122A27EA331D8EA13B559CF48F5F60573FDCAAAA8F83103CD6A5FF4E6AB3B6F6A4C2C073CEBC2E12EEC89CF8FB0CD4EF713C354FE5C3D7E60E5D2DA4D7C82D181B4B1DEF3DE585A616398CACE990EBDAF23C441DD72D89D1A295163B6337F5AFB59FA35E77FA7EDF391F257220D0D5BB61395D2
6826690AD1297D714B5D114A2CBD0A814E7。步驟409,判斷最近一次從第六寄存器中讀取到的數(shù)據(jù)的取值是否為零,如果為零,則執(zhí)行步驟412,否則,執(zhí)行步驟410。步驟410,讀取第四寄存器中的數(shù)據(jù),根據(jù)讀取到的數(shù)據(jù)更新第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取第三寄存器中的數(shù)據(jù),根據(jù)讀取到的數(shù)據(jù)更新第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取第一寄存器中的數(shù)據(jù),根據(jù)讀取到的數(shù)據(jù)更新第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)。步驟411,調(diào)用蒙哥馬利模乘器,對(duì)第六隨機(jī)存儲(chǔ)器、第七隨機(jī)存儲(chǔ)器和第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新第四寄存器中的數(shù)據(jù)。本實(shí)施例中,將蒙哥馬利模乘器的三個(gè)輸入?yún)?shù)分別設(shè)置為第四寄存器中的數(shù)據(jù)
S、第三寄存器中的數(shù)據(jù)W和第一寄存器中的數(shù)據(jù)N,可模乘得到MontMul (S,W,N) =S*W*R-1Hiod N,將模乘結(jié)果存儲(chǔ)到第四寄存器后,第四寄存器中的數(shù)據(jù)S被更新為S*W* R-1Hiod N。讀取到的數(shù)據(jù)為n1(l時(shí),其取值為1,更新后的第四寄存器中的數(shù)據(jù)S為0x4CC37D9915FB733FD1C38A9EE6BFEB83CAB6CF482AA0EA7EC0EDA4AC73CDD4D74709651AF6C27C651714F2A90FE5E9D1C04E7B0B52EEBA3EF4A1275F2F0A383ECD1B8FD96504B968D28E907E6CD8961C418012572FB373E3D89E2E0A0BE854C9AF793B0B68E9B5874F180AF11BE5AE479FBCBCECE61042E968715B5EF268003065DD1333826E22D4E54C6D653FFDE3A13F3855DEFF6CD9D7565FECF4970FF367B3F0428D104D187115EBCC9A87344BDFA45EB91E ;讀取到的數(shù)據(jù)為n8時(shí),其取值為1,更新后的第四寄存器中的數(shù)據(jù)S為0x8C20939016ABD41CA8A1847BACDE85062635FAB714A0F228F12C66765E5FE18EA22DCE72D50DFD4E2B038937A61D65A865ABE4517E40758CADA55860E63D1089D27DE535CCD76613374D7122DDA6D90ABBC1534CF277DFF7276E53B9DC4A20932E42C45314E39E47373CCA6C8419182D0B23A71EA02CD5DE0C3I1A5C8484037F5C79E338ECF584629205E7D11FD8F327I192349D755DBE0FBDEE9FACEAA716FE80DCCF31AD92442C158A492AC5477BA960D860AB ;讀取到的數(shù)據(jù)為n7時(shí),其取值為1,更新后的第四寄存器中的數(shù)據(jù)S為0x2DCC72C7ED97C1C67489B8A4B1FF9D974922470C921F5162BE214D66DDF3EEE5BBB4355E061249A31A0FBC734D42A3655141EEC7B43B4D36003DBF58D395A37C0C2E525BCCBA5DB2AFC6DAD7210E47F22F164B37EFD6C588B43F9E4506A2EEF21DE64F2F1F9E9B23A49F7B6FC22A7FFF1386E8A07782D333E95A683B8A54E3B746ACD7DB2F32E2B0DE18B6E39611842DF49007B8CBA6F5ADE65664D0C28CBD6E1FFI20B732BD80I3A3F42DI1258EFDC0DFADFDA7 ;讀取到的數(shù)據(jù)為n5時(shí),其取值為1,更新后的第四寄存器中的數(shù)據(jù)S為0X3578C006A61EB7EDF5F32262132731CE6B9B7F52FD03CBE455C4BC582123FD2E5E99839C0A28607C98C004510E89EC29765CE4FA002D49A0D7AD0877F2073A27F53209FA8E8AFA74EA617C0448384AF3D34808D04F208F1D3CE417E81372DE5211FD8DDAB158119A94734D5F3EC196468AC9E4A683AFB9B3AF46EBF4C651C76C6CE9E4D401E4B06AFED348B29AE3396686CBA0A6EDE6E45A3E3CC942F809E3660668703B29D397237253A29B2E720E945748BCB8o需要說(shuō)明的是,執(zhí)行完本步驟后,繼續(xù)執(zhí)行步驟412。步驟412,判斷最近一次從第六寄存器中讀取到的數(shù)據(jù)是否為第六寄存器中位于最低位的數(shù)據(jù),如果是,則執(zhí)行步驟414 ;否則,執(zhí)行步驟413。
步驟413,對(duì)第五寄存器中的數(shù)據(jù)進(jìn)行更新,并返回步驟407。具體地,可以將第五寄存器中的數(shù)據(jù)減1,作為更新后的第五寄存器中的數(shù)據(jù)。步驟414,將第四寄存器中的數(shù)據(jù)輸出。本發(fā)明實(shí)施例的技術(shù)方案,根據(jù)模長(zhǎng)對(duì)應(yīng)的二進(jìn)制數(shù)的各個(gè)數(shù)據(jù)位的取值,通過(guò)蒙哥馬利模乘器進(jìn)行迭代運(yùn)算,能夠在模長(zhǎng)為任意值時(shí),得到大數(shù)預(yù)計(jì)算結(jié)果,從而提高了數(shù)據(jù)處理速度。需要說(shuō)明的是,在本發(fā)明的其他實(shí)施方式中,也可以將第五寄存器中的數(shù)據(jù)初始化為除第六寄存器中的數(shù)據(jù)的長(zhǎng)度之外的其他數(shù)值,該數(shù)值與第六寄存器中的最高位的數(shù)據(jù)的位置相對(duì)應(yīng);還可以在對(duì)第五寄存器中的數(shù)據(jù)更新時(shí),對(duì)該數(shù)據(jù)減去除I之外的其他數(shù)值,根據(jù)更新之后的第五寄存器中的數(shù)據(jù)讀取到的第六寄存器中的數(shù)據(jù),比根據(jù)更新之前的第五寄存器中的數(shù)據(jù)讀取到的第六寄存器中的數(shù)據(jù)低一位,同樣可以實(shí)現(xiàn)本發(fā)明的發(fā)明目的。結(jié)合本文中所公開的實(shí)施例描述的方法中的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來(lái)實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法,其特征在于,包括以下步驟: 51、讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第一隨機(jī)存儲(chǔ)器;讀取第二寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第二隨機(jī)存儲(chǔ)器;所述第一寄存器用于存儲(chǔ)第一數(shù)據(jù),所述第二寄存器用于存儲(chǔ)第二數(shù)據(jù),所述第二數(shù)據(jù)的取值為以2為底數(shù),以第三數(shù)據(jù)的取值為指數(shù)的冪,所述第三數(shù)據(jù)為整數(shù); 52、調(diào)用取模模塊,對(duì)所述第一隨機(jī)存儲(chǔ)器和所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果分別寫入到第三寄存器和第四寄存器;所述取模模塊用于將所述第一隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),將所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為被模數(shù),進(jìn)行取模運(yùn)算; 53、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第三隨機(jī)存儲(chǔ)器和第四隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第五隨機(jī)存儲(chǔ)器; 54、調(diào)用模加模塊,對(duì)所述第三隨機(jī)存儲(chǔ)器、所述第四隨機(jī)存儲(chǔ)器和所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述模加模塊用于將所述第三隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第四隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為加數(shù),將所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),進(jìn)行模加運(yùn)算; 55、根據(jù)第五寄存器中的數(shù)據(jù),從第六寄存器中讀取位于最低位的數(shù)據(jù),將讀取到的數(shù)據(jù)作為當(dāng)前位數(shù)據(jù),所述第五寄存器中的數(shù)據(jù)的初始值為預(yù)設(shè)值,所述第六寄存器用于存儲(chǔ)所述第三數(shù)據(jù); 56、對(duì)所述當(dāng)前位數(shù)據(jù)的取值進(jìn)行判斷,如果所述當(dāng)前位數(shù)據(jù)的取值為零,則執(zhí)行步驟S7 ;如果所述當(dāng)前位數(shù)據(jù)的取值為1,則執(zhí)行步驟SlO ; 57、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第六隨機(jī)存儲(chǔ)器和第七隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第八隨機(jī)存儲(chǔ)器; 58、調(diào)用蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述蒙哥馬利模乘器用于將所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù)、所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)分別作為第一輸入?yún)?shù)、第二輸入?yún)?shù)和第三輸入?yún)?shù),進(jìn)行模乘運(yùn)算; 59、對(duì)所述第五寄存器中的數(shù)據(jù)進(jìn)行更新,根據(jù)更新后的所述第五寄存器中的數(shù)據(jù),從所述第六寄存器中讀取比所述當(dāng)前位數(shù)據(jù)高一位的數(shù)據(jù),將讀取到數(shù)據(jù)作為更新后的當(dāng)前位數(shù)據(jù),并返回步驟S6; 510、讀取所述第四寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取所述第三寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取所述第一寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù); 511、調(diào)用所述蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第四寄存器中的數(shù)據(jù); 512、判斷所述當(dāng)前位數(shù)據(jù)是否為所述第六寄存器中位于最高位的數(shù)據(jù),如果是,則執(zhí)行步驟S13 ;否則,返回步驟S7 ; 513、將所述第四寄存器中的數(shù)據(jù)輸出。
2.如權(quán)利要求1所述的方法,其特征在于,所述對(duì)所述第五寄存器中的數(shù)據(jù)進(jìn)行更新,具體為: 將所述第五寄存器中的數(shù)據(jù)加預(yù)設(shè)步長(zhǎng),將得到的結(jié)果作為更新后的所述第五寄存器中的數(shù)據(jù)。
3.如權(quán)利要求2所述的方法,其特征在于,所述預(yù)設(shè)值為1,所述預(yù)設(shè)步長(zhǎng)為I; 所述判斷所述當(dāng)前位數(shù)據(jù)是否為所述第六寄存器中位于最高位的數(shù)據(jù),具體為: 判斷所述第五寄存器中的數(shù)據(jù)的取值是否等于所述第六寄存器中的數(shù)據(jù)的長(zhǎng)度,如果是,則確定所述當(dāng)前位數(shù)據(jù)為所述第六寄存器中位于最高位的數(shù)據(jù);否則,確定所述當(dāng)前位數(shù)據(jù)不是所述第六寄 存器中位于最高位的數(shù)據(jù)。
4.一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法,其特征在于,包括以下步驟: S1、讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第一隨機(jī)存儲(chǔ)器;讀取第二寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第二隨機(jī)存儲(chǔ)器;所述第一寄存器用于存儲(chǔ)第一數(shù)據(jù),所述第二寄存器用于存儲(chǔ)第二數(shù)據(jù),所述第二數(shù)據(jù)的取值為以2為底數(shù),以第三數(shù)據(jù)的取值為指數(shù)的冪,所述第三數(shù)據(jù)為整數(shù); S2、調(diào)用取模模塊,對(duì)所述第一隨機(jī)存儲(chǔ)器和所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果分別寫入到第三寄存器和第四寄存器;所述取模模塊用于將所述第一隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),將所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為被模數(shù),進(jìn)行取模運(yùn)算; S3、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第三隨機(jī)存儲(chǔ)器和第四隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第五隨機(jī)存儲(chǔ)器; S4、調(diào)用模加模塊,對(duì)所述第三隨機(jī)存儲(chǔ)器、所述第四隨機(jī)存儲(chǔ)器和所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述模加模塊用于將所述第三隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第四隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為加數(shù),將所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),進(jìn)行模加運(yùn)算; S5、根據(jù)第五寄存器中的數(shù)據(jù),從第六寄存器中讀取位于最低位的數(shù)據(jù),將讀取到的數(shù)據(jù)作為當(dāng)前位數(shù)據(jù),所述第五寄存器中的數(shù)據(jù)的初始值為預(yù)設(shè)值,所述第六寄存器用于存儲(chǔ)所述第三數(shù)據(jù); S6、對(duì)所述當(dāng)前位數(shù)據(jù)的取值進(jìn)行判斷,如果所述當(dāng)前位數(shù)據(jù)的取值為零,則執(zhí)行步驟S9 ;如果所述當(dāng)前位數(shù)據(jù)的取值為1,則執(zhí)行步驟S7 ; S7、根據(jù)所述第三寄存器中的數(shù)據(jù)更新所述第四寄存器中的數(shù)據(jù); S8、判斷所述當(dāng)前位數(shù)據(jù)是否為所述第六寄存器中位于最高位的數(shù)據(jù),如果是,則執(zhí)行步驟S15 ;否則,執(zhí)行步驟S9 ; S9、對(duì)所述第五寄存器中的數(shù)據(jù)進(jìn)行更新,根據(jù)更新后的所述第五寄存器中的數(shù)據(jù),從所述第六寄存器中讀取比所述當(dāng)前位數(shù)據(jù)高一位的數(shù)據(jù),將讀取到數(shù)據(jù)作為更新后的當(dāng)前位數(shù)據(jù); S10、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第六隨機(jī)存儲(chǔ)器和第七隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第八隨機(jī)存儲(chǔ)器; S11、調(diào)用蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述蒙哥馬利模乘器用于將所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù)、所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)分別作為第一輸入?yún)?shù)、第二輸入?yún)?shù)和第三輸入?yún)?shù),進(jìn)行模S乘運(yùn)算; `512、對(duì)所述當(dāng)前位數(shù)據(jù)的取值進(jìn)行判斷,如果所述當(dāng)前位數(shù)據(jù)的取值為零,則返回步驟S9 ;如果所述當(dāng)前位數(shù)據(jù)的取值為1,則執(zhí)行步驟S13 ; `513、讀取所述第四寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取所述第三寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取所述第一寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù); `514、調(diào)用所述蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第四寄存器中的數(shù)據(jù),并返回步驟S9 ; `515、將所述第四寄存器中的數(shù)據(jù)輸出。
5.如權(quán)利要求4所述的方法,其特征在于,所述對(duì)所述第五寄存器中的數(shù)據(jù)進(jìn)行更新,具體為: 將所述第五寄存器中的數(shù)據(jù)加預(yù)設(shè)步長(zhǎng),將得到的結(jié)果作為更新后的所述第五寄存器中的數(shù)據(jù)。
6.如權(quán)利要求5所述的方法,其特征在于,所述預(yù)設(shè)值為1,所述預(yù)設(shè)步長(zhǎng)為I; 所述判斷所述當(dāng)前位數(shù)據(jù) 是否為所述第六寄存器中位于最高位的數(shù)據(jù),具體為: 判斷所述第五寄存器中的數(shù) 據(jù)的取值是否等于所述第六寄存器中的數(shù)據(jù)的長(zhǎng)度,如果是,則確定所述當(dāng)前位數(shù)據(jù)為所述第六寄存器中位于最高位的數(shù)據(jù);否則,確定所述當(dāng)前位數(shù)據(jù)不是所述第六寄存器中位于最高位的數(shù)據(jù)。
7.—種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法,其特征在于,包括以下步驟: `51、讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第一隨機(jī)存儲(chǔ)器;讀取第二寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第二隨機(jī)存儲(chǔ)器;所述第一寄存器用于存儲(chǔ)第一數(shù)據(jù),所述第二寄存器用于存儲(chǔ)第二數(shù)據(jù),所述第二數(shù)據(jù)的取值為以2為底數(shù),以第三數(shù)據(jù)的取值為指數(shù)的冪,所述第三數(shù)據(jù)為整數(shù); `52、調(diào)用取模模塊,對(duì)所述第一隨機(jī)存儲(chǔ)器和所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果分別寫入到第三寄存器和第四寄存器;所述取模模塊用于將所述第一隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),將所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為被模數(shù),進(jìn)行取模運(yùn)算; `53、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第三隨機(jī)存儲(chǔ)器和第四隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第五隨機(jī)存儲(chǔ)器; `54、調(diào)用模加模塊,對(duì)所述第三隨機(jī)存儲(chǔ)器、所述第四隨機(jī)存儲(chǔ)器和所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述模加模塊用于將所述第三隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第四隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為加數(shù),將所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),進(jìn)行模加運(yùn)算; `55、讀取所述第四寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第六隨機(jī)存儲(chǔ)器和第七隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第八隨機(jī)存儲(chǔ)器;調(diào)用蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第四寄存器中的數(shù)據(jù);所述蒙哥馬利模乘器用于將所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù)、所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)分別作為第一輸入?yún)?shù)、第二輸入?yún)?shù)和第三輸入?yún)?shù),進(jìn)行模乘運(yùn)算; 根據(jù)第五寄存器中的數(shù)據(jù),從第六寄存器中讀取位于最高位的數(shù)據(jù),將讀取到的數(shù)據(jù)作為當(dāng)前位數(shù)據(jù),所述第五寄存器中的數(shù)據(jù)的初始值為預(yù)設(shè)值,所述第六寄存器用于存儲(chǔ)所述第三數(shù)據(jù); S6、對(duì)所述當(dāng)前位數(shù)據(jù)的取值進(jìn)行判斷,如果所述當(dāng)前位數(shù)據(jù)的取值為零,則執(zhí)行步驟S9 ;如果所述當(dāng)前位數(shù)據(jù)的取值為1,則執(zhí)行步驟S7 ; S7、讀取所述第四寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取所述第三寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取所述第一寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù); S8、調(diào)用所述蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù) 據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第四寄存器中的數(shù)據(jù),并執(zhí)行步驟S9 ; S9、判斷所述當(dāng)前位數(shù)據(jù)是否為所述第六寄存器中位于最低位的數(shù)據(jù),如果是,則執(zhí)行步驟Sll ;否則,執(zhí)行步驟SlO ; S10、讀取所述第四寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)分別更新所述第六隨機(jī)存儲(chǔ)器和所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù);讀取所述第一寄存器中的數(shù)據(jù),使用讀取到的數(shù)據(jù)更新第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù);調(diào)用蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第四寄存器中的數(shù)據(jù);所述蒙哥馬利模乘器用于將所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù)、所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)分別作為第一輸入?yún)?shù)、第二輸入?yún)?shù)和第三輸入?yún)?shù),進(jìn)行模乘運(yùn)算; 對(duì)所述第五寄存器中的數(shù)據(jù)進(jìn)行更新,根據(jù)更新后的所述第五寄存器中的數(shù)據(jù),從所述第六寄存器中讀取比所述當(dāng)前位數(shù)據(jù)低一位的數(shù)據(jù),將讀取到數(shù)據(jù)作為更新后的當(dāng)前位數(shù)據(jù),并返回步驟S6; S11、將所述第四寄存器中的數(shù)據(jù)輸出。
8.如權(quán)利要求7所述的方法,其特征在于,所述對(duì)所述第五寄存器中的數(shù)據(jù)進(jìn)行更新,具體為: 將所述第五寄存器中的數(shù)據(jù)減預(yù)設(shè)步長(zhǎng),將得到的結(jié)果作為更新后的所述第五寄存器中的數(shù)據(jù)。
9.如權(quán)利要求8所述的方法,其特征在于,所述預(yù)設(shè)值為所述第六寄存器中的數(shù)據(jù)的長(zhǎng)度,所述預(yù)設(shè)步長(zhǎng)為I ; 所述判斷所述當(dāng)前位數(shù)據(jù)是否為所述第六寄存器中位于最低位的數(shù)據(jù),具體為: 判斷所述第五寄存器中的數(shù)據(jù)的取值是否等于1,如果是,則確定所述當(dāng)前位數(shù)據(jù)為所述第六寄存器中位于最低位的數(shù)據(jù);否則,確定所述當(dāng)前位數(shù)據(jù)不是所述第六寄存器中位于最低位的數(shù)據(jù)。
10.一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法,其特征在于,包括以下步驟: S1、讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第一隨機(jī)存儲(chǔ)器;讀取第二寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第二隨機(jī)存儲(chǔ)器中;所述第一寄存器用于存儲(chǔ)第一數(shù)據(jù),所述第二寄存器用于存儲(chǔ)第二數(shù)據(jù),所述第二數(shù)據(jù)的取值為以2為底數(shù),以第三數(shù)據(jù)的取值為指數(shù)的冪,所述第三數(shù)據(jù)為整數(shù); S2、調(diào)用取模模塊,對(duì)所述第一隨機(jī)存儲(chǔ)器和所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果分別寫入到第三寄存器和第四寄存器;所述取模模塊用于將所述第一隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),將所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為被模數(shù),進(jìn)行取模運(yùn)算; S3、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第三隨機(jī)存儲(chǔ)器和第四隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第五隨機(jī)存儲(chǔ)器; S4、調(diào)用模加模塊,對(duì)所述第三隨機(jī)存儲(chǔ)器、所述第四隨機(jī)存儲(chǔ)器和所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述模加模塊用于將所述第三隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第四隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為加數(shù),將所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),進(jìn)行模加運(yùn)算; SS、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第六隨機(jī)存儲(chǔ)器和第七隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第八隨機(jī)存儲(chǔ)器; S6、調(diào)用蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述蒙哥馬利模乘器用于將所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù)、所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)分別作為第一輸入?yún)?shù)、第二輸入?yún)?shù)和第三輸入?yún)?shù),進(jìn)行模乘運(yùn)算; S7、將第五寄存器中的數(shù)據(jù)加1,將得到的結(jié)果作為更新后的所述第五寄存器中的數(shù)據(jù),判斷所述第五寄存器中的數(shù)據(jù)是否等于所述第六寄存器中的數(shù)據(jù)的長(zhǎng)度,如果是,則執(zhí)行步驟S8 ;否則,返回步驟SS ;所述第五寄存器中的數(shù)據(jù)的初始值為零,所述第六寄存器用于存儲(chǔ)所述第 三數(shù)據(jù),所述第三數(shù)據(jù)的取值為2的整數(shù)次冪; S8、將所述第三寄存器中的數(shù)據(jù)輸出。
11.一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法,其特征在于,包括以下步驟: S1、讀取第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第一隨機(jī)存儲(chǔ)器;讀取第二寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第二隨機(jī)存儲(chǔ)器;所述第一寄存器用于存儲(chǔ)第一數(shù)據(jù),所述第二寄存器用于存儲(chǔ)第二數(shù)據(jù),所述第二數(shù)據(jù)的取值為以2為底數(shù),以第三數(shù)據(jù)的取值為指數(shù)的冪,所述第三數(shù)據(jù)為整數(shù); S2、調(diào)用取模模塊,對(duì)所述第一隨機(jī)存儲(chǔ)器和所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算結(jié)果分別寫入到第三寄存器和第四寄存器;所述取模模塊用于將所述第一隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),將所述第二隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為被模數(shù),進(jìn)行取模運(yùn)算; S3、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第三隨機(jī)存儲(chǔ)器和第四隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第五隨機(jī)存儲(chǔ)器; S4、調(diào)用模加模塊,對(duì)所述第三隨機(jī)存儲(chǔ)器、所述第四隨機(jī)存儲(chǔ)器和所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述模加模塊用于將所述第三隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第四隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為加數(shù),將所述第五隨機(jī)存儲(chǔ)器中的數(shù)據(jù)作為模數(shù),進(jìn)行模加運(yùn)算; SS、讀取所述第三寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)分別寫入到第六隨機(jī)存儲(chǔ)器和第七隨機(jī)存儲(chǔ)器;讀取所述第一寄存器中的數(shù)據(jù),將讀取到的數(shù)據(jù)寫入到第八隨機(jī)存儲(chǔ)器;S6、調(diào)用蒙哥馬利模乘器,對(duì)所述第六隨機(jī)存儲(chǔ)器、所述第七隨機(jī)存儲(chǔ)器和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)進(jìn)行模乘運(yùn)算,使用運(yùn)算結(jié)果更新所述第三寄存器中的數(shù)據(jù);所述蒙哥馬利模乘器用于將所述第六隨機(jī)存儲(chǔ)器中的數(shù)據(jù)、所述第七隨機(jī)存儲(chǔ)器中的數(shù)據(jù)和所述第八隨機(jī)存儲(chǔ)器中的數(shù)據(jù)分別作為第一輸入?yún)?shù)、第二輸入?yún)?shù)和第三輸入?yún)?shù),進(jìn)行模乘運(yùn)算; S7、判斷第五寄存器中的數(shù)據(jù)是否等于所述第六寄存器中的數(shù)據(jù)的長(zhǎng)度,如果是,則執(zhí)行步驟S9 ;否則,執(zhí)行步驟S8 ;所述第五寄存器中的數(shù)據(jù)的初始值為1,所述第六寄存器用于存儲(chǔ)所述第三數(shù)據(jù),所述第三數(shù)據(jù)的取值為2的整數(shù)次冪; S8、將所述第五寄存器中的數(shù)據(jù)加1,將得到的結(jié)果作為更新后的所述第五寄存器中的數(shù)據(jù),并返回步驟S5; S9、將所述第三寄存器中的數(shù)據(jù)輸出。
全文摘要
本發(fā)明公開一種在嵌入式系統(tǒng)中實(shí)現(xiàn)大數(shù)預(yù)計(jì)算的方法,根據(jù)模長(zhǎng)的數(shù)據(jù)格式以及模長(zhǎng)對(duì)應(yīng)的二進(jìn)制數(shù)的各個(gè)數(shù)據(jù)位的取值,調(diào)用取模模塊、模加模塊和蒙哥馬利模乘器進(jìn)行迭代運(yùn)算,能夠在模長(zhǎng)為任意值時(shí),得到大數(shù)預(yù)計(jì)算結(jié)果,從而提高了數(shù)據(jù)處理速度。
文檔編號(hào)G06F7/50GK103207770SQ20131013208
公開日2013年7月17日 申請(qǐng)日期2013年4月16日 優(yōu)先權(quán)日2013年4月16日
發(fā)明者陸舟, 于華章 申請(qǐng)人:飛天誠(chéng)信科技股份有限公司