長(zhǎng)度len,具體包括以下步驟: 初始化第一變量ZeroCounter,第二變量OneCounter,循環(huán)變量i和第三變量Out_i ; 判斷循環(huán)變量i是否小于等于E_Bitslen,其中E_Bitslen是第二預(yù)設(shè)參數(shù)的位長(zhǎng); 當(dāng)循環(huán)變量i小于等于E_Bitslen時(shí),判斷E[i]的值是否滿足邏輯真; 當(dāng)E[i]的值滿足邏輯真時(shí),判斷第一變量ZeroCounter是否等于零值; 當(dāng)?shù)谝蛔兞縕eroCounter不等于零值時(shí),判斷第二變量OneCounter是否等于零值;當(dāng)?shù)诙兞縊neCounter等于零值時(shí),運(yùn)算標(biāo)志數(shù)T [Out_i]賦值零,第三變量Out_i自增一,運(yùn)算標(biāo)志數(shù)T [Out_1:0ut_i+ ZeroCounter-1]賦值1,接著第三變量Out_i等于Out_i+ ZeroCounter,第一變量 ZeroCounter 賦值為 I ; 循環(huán)變量i自增一,接著進(jìn)入判斷循環(huán)變量i是否小于等于E_Bitslen的步驟; 當(dāng)?shù)诙兞縊neCounter不等于零值時(shí),進(jìn)入循環(huán)變量i自增一的步驟; 當(dāng)?shù)谝蛔兞縕eroCounter等于零值時(shí),第二變量OneCounter自增一,接著進(jìn)入循環(huán)變量i自增一的步驟; 當(dāng)E[i]的值不滿足邏輯真時(shí),判斷第二變量OneCounter是否等于零值; 當(dāng)?shù)诙兞縊neCounter不等于零值,判斷第一變量ZeroCounter是否等于零值; 當(dāng)?shù)谝蛔兞縕eroCounter等于零值時(shí),運(yùn)算標(biāo)志數(shù)T [Out_1: Out_i+ ZeroCounter-1]賦值為I,第三變量Out_i等于Out_i+ ZeroCounter,第二變量OneCounter]賦值為零值,第一變量ZeroCounter賦值為I,接著進(jìn)入循環(huán)變量i自增一的步驟; 當(dāng)?shù)谝蛔兞縕eroCounter不等于零值時(shí),進(jìn)入循環(huán)變量i自增一的步驟; 當(dāng)?shù)诙兞縊neCounter等于零值,第一變量ZeroCounter自增I,接著進(jìn)入循環(huán)變量i自增一的步驟; 當(dāng)循環(huán)變量i不小于等于E_Bitslen時(shí),判斷第三變量Out_i值是否大于零; 當(dāng)?shù)谌兞縊ut」值大于零時(shí),第三變量Out_i自減I ; 輸出位長(zhǎng)度Ien= Out_i,和運(yùn)算標(biāo)志數(shù)T ; 當(dāng)?shù)谌兞縊ut_i值不大于零時(shí),進(jìn)入輸出位長(zhǎng)度Ien= Out_i,和運(yùn)算標(biāo)志數(shù)T的步驟。
4.如權(quán)利要求2所述的運(yùn)算方法,其特征在于:根據(jù)所述第二預(yù)設(shè)參數(shù)轉(zhuǎn)換成計(jì)算過(guò)程的編碼,得到運(yùn)算標(biāo)志數(shù)T和運(yùn)算標(biāo)志數(shù)T的位長(zhǎng)度len,具體包括以下步驟: 初始化運(yùn)算標(biāo)志數(shù)T和運(yùn)算標(biāo)志數(shù)T的位長(zhǎng)度Ien ; 判斷所述第二預(yù)設(shè)參數(shù)是否小于4 ; 當(dāng)所述第二預(yù)設(shè)參數(shù)小于4時(shí);判斷所述第二預(yù)設(shè)參數(shù)是否等于3 ; 當(dāng)?shù)诙A(yù)設(shè)參數(shù)等于3,運(yùn)算標(biāo)志數(shù)T位或一,位長(zhǎng)度Ien自增一; 輸出位長(zhǎng)度Ien= Out_i,和運(yùn)算標(biāo)志數(shù)T ; 當(dāng)?shù)诙A(yù)設(shè)參數(shù)不等于3時(shí),位長(zhǎng)度Ien自增一,接著進(jìn)入輸出位長(zhǎng)度Ien= Out_i,和運(yùn)算標(biāo)志數(shù)T的步驟; 當(dāng)所述第二預(yù)設(shè)參數(shù)大于等于4時(shí),判斷第二預(yù)設(shè)參數(shù)的二進(jìn)制數(shù)最低位的值是否等于I ; 當(dāng)?shù)诙A(yù)設(shè)參數(shù)的二進(jìn)制數(shù)最低位的值等于I時(shí),運(yùn)算標(biāo)志數(shù)T位或一,第二預(yù)設(shè)參數(shù)向右移一位,和位長(zhǎng)度Ien自增一; 當(dāng)?shù)诙A(yù)設(shè)參數(shù)的二進(jìn)制數(shù)最低位的值不等于I時(shí),第二預(yù)設(shè)參數(shù)自減1,和位長(zhǎng)度Ien自增一; 運(yùn)算標(biāo)志數(shù)T向左移一位,接著進(jìn)入判斷所述第二預(yù)設(shè)參數(shù)是否小于4的步驟。
5.如權(quán)利要求1-4任意一項(xiàng)所述的運(yùn)算方法,其特征在于:所述根據(jù)第一輸入?yún)?shù)NA、第二輸入?yún)?shù)NB、蒙哥馬利模乘轉(zhuǎn)換系數(shù)和所述蒙哥馬利模乘函數(shù),得到模乘結(jié)果的步驟,具體包括以下步驟: 根據(jù)第一輸入?yún)?shù)NA、蒙哥馬利模乘轉(zhuǎn)換系數(shù)和所述蒙哥馬利模乘函數(shù),得到第一模乘結(jié)果NAR ; 根據(jù)第二輸入?yún)?shù)NB、第一模乘結(jié)果NAR和所述蒙哥馬利模乘函數(shù),得到最終模乘結(jié)果O
6.如權(quán)利要求1-4任意一項(xiàng)所述的運(yùn)算方法,其特征在于:所述根據(jù)第一輸入?yún)?shù)NA、第二輸入?yún)?shù)NB、蒙哥馬利模乘轉(zhuǎn)換系數(shù)和所述蒙哥馬利模乘函數(shù),得到模乘結(jié)果的步驟,具體包括以下步驟: 根據(jù)第二輸入?yún)?shù)NB、蒙哥馬利模乘轉(zhuǎn)換系數(shù)和所述蒙哥馬利模乘函數(shù),得到第二模乘結(jié)果NBR ; 根據(jù)第一輸入?yún)?shù)NA、第二模乘結(jié)果NBR和所述蒙哥馬利模乘函數(shù),得到最終模乘結(jié)果O
7.如權(quán)利要求1-4任意一項(xiàng)所述的運(yùn)算方法,其特征在于:所述根據(jù)第一輸入?yún)?shù)NA、第二輸入?yún)?shù)NB、蒙哥馬利模乘轉(zhuǎn)換系數(shù)和所述蒙哥馬利模乘函數(shù),得到模乘結(jié)果的步驟,具體包括以下步驟: 根據(jù)第一輸入?yún)?shù)NA、第二輸入?yún)?shù)NB和所述蒙哥馬利模乘函數(shù),得到第三模乘結(jié)果NANBr ; 根據(jù)第三模乘結(jié)果NANBr、蒙哥馬利模乘轉(zhuǎn)換系數(shù)和所述蒙哥馬利模乘函數(shù),得到最終模乘結(jié)果。
8.一種嵌入式安全芯片,其特征在于:所述嵌入式安全芯片包括: 獲取模塊,用于獲取兩個(gè)第一預(yù)設(shè)參數(shù),和第二預(yù)設(shè)參數(shù),其中第一預(yù)設(shè)參數(shù)為常數(shù)I ; 蒙哥馬利模乘模塊,用于根據(jù)兩個(gè)第一預(yù)設(shè)參數(shù),得到第一運(yùn)算結(jié)果A ; 次方計(jì)算模塊,用于根據(jù)所述蒙哥馬利模乘模塊輸出的第一運(yùn)算結(jié)果A、第一預(yù)設(shè)參數(shù)、第二預(yù)設(shè)參數(shù)和次方計(jì)算函數(shù),得到第二運(yùn)算結(jié)果B,其中,第二預(yù)設(shè)參數(shù)為W-4,W=Φ (N),Φ是歐拉函數(shù),N是蒙哥馬利模乘中模數(shù),第二預(yù)設(shè)參數(shù)只與模數(shù)N有關(guān),次方計(jì)算函數(shù)為計(jì)算IT1數(shù)的多少次方的函數(shù),R與IT1關(guān)于模數(shù)N互逆; 所述蒙哥馬利模乘模塊,還用于根據(jù)第一運(yùn)算結(jié)果A和第二運(yùn)算結(jié)果B,得到蒙哥馬利模乘轉(zhuǎn)換系數(shù),以及根據(jù)第一輸入?yún)?shù)NA、第二輸入?yún)?shù)NB和蒙哥馬利模乘轉(zhuǎn)換系數(shù),得到最終模乘結(jié)果。
9.如權(quán)利要求8所述的嵌入式安全芯片,其特征在于:所述次方計(jì)算模塊還用于: 根據(jù)所述第二預(yù)設(shè)參數(shù)轉(zhuǎn)換成計(jì)算過(guò)程的編碼,得到運(yùn)算標(biāo)志數(shù)T和運(yùn)算標(biāo)志數(shù)T的位長(zhǎng)度Ien ; 將第一運(yùn)算結(jié)果A賦值給中間結(jié)果S ; 對(duì)循環(huán)量i初始化,并將Ien-1值賦值給循環(huán)量i ; 判斷循環(huán)量i是否大于等于零值; 當(dāng)循環(huán)量i大于等于零值時(shí),運(yùn)算標(biāo)志數(shù)T [i]的值是否滿足邏輯真; 當(dāng)循環(huán)量i小于零值時(shí),第二運(yùn)算結(jié)果B等于所述中間結(jié)果S ; 當(dāng)運(yùn)算標(biāo)志數(shù)T [i]的值不滿足邏輯真時(shí),根據(jù)所述中間結(jié)果S、第一預(yù)設(shè)參數(shù)和蒙哥馬利模乘函數(shù),對(duì)所述中間結(jié)果S進(jìn)行更新; 當(dāng)運(yùn)算標(biāo)志數(shù)T [i]的值滿足邏輯真時(shí),根據(jù)兩個(gè)所述中間結(jié)果S和蒙哥馬利模乘函數(shù),對(duì)所述中間結(jié)果S進(jìn)行更新; 當(dāng)所述中間結(jié)果S進(jìn)行更新后,循環(huán)量i值自減常數(shù)1,接著進(jìn)入判斷循環(huán)量i是否大于等于零值的步驟。
【專利摘要】本發(fā)明提供了嵌入式安全芯片和其的蒙哥馬利模乘運(yùn)算方法,所述運(yùn)算方法包括以下步驟獲取兩個(gè)第一預(yù)設(shè)參數(shù),和第二預(yù)設(shè)參數(shù),其中第一預(yù)設(shè)參數(shù)為常數(shù)1;根據(jù)兩個(gè)第一預(yù)設(shè)參數(shù)和蒙哥馬利模乘函數(shù),得到第一運(yùn)算結(jié)果A;根據(jù)第一運(yùn)算結(jié)果A、第一預(yù)設(shè)參數(shù)、第二預(yù)設(shè)參數(shù)和次方計(jì)算函數(shù),得到第二運(yùn)算結(jié)果B;根據(jù)第一運(yùn)算結(jié)果A、第二運(yùn)算結(jié)果B和所述蒙哥馬利模乘函數(shù),得到蒙哥馬利模乘轉(zhuǎn)換系數(shù)D;根據(jù)第一輸入?yún)?shù)NA、第二輸入?yún)?shù)NB、蒙哥馬利模乘轉(zhuǎn)換系數(shù)和所述蒙哥馬利模乘函數(shù),得到最終模乘結(jié)果。該蒙哥馬利模乘運(yùn)算方法可以避開大數(shù)模冪方式的計(jì)算轉(zhuǎn)換系數(shù),而且不需要事先計(jì)算好系數(shù),可以節(jié)省存儲(chǔ)空間。
【IPC分類】G06F7-72
【公開號(hào)】CN104765586
【申請(qǐng)?zhí)枴緾N201510178336
【發(fā)明人】陳金強(qiáng), 徐浩
【申請(qǐng)人】深圳國(guó)微技術(shù)有限公司
【公開日】2015年7月8日
【申請(qǐng)日】2015年4月15日