欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種基于模運(yùn)算的全同態(tài)加密處理方法與流程

文檔序號(hào):12201803閱讀:423來(lái)源:國(guó)知局
一種基于模運(yùn)算的全同態(tài)加密處理方法與流程

本發(fā)明屬于信息安全領(lǐng)域,更具體地,涉及一種基于模運(yùn)算的全同態(tài)加密處理方法。



背景技術(shù):

全同態(tài)加密作為一種前沿和先進(jìn)的加密算法,已經(jīng)經(jīng)歷了接近40年的發(fā)展。1978年,R.Rivest等人提出了“全同態(tài)加密”的概念,2009年C.Gentry理論上設(shè)計(jì)了基于理想格的全同態(tài)加密方案,2010年他又提出了“somewhat”同態(tài)加密方案,2011年Brakerski等人提出了基于容錯(cuò)學(xué)習(xí)問(wèn)題(Learning with errors,簡(jiǎn)稱LWE)和環(huán)上的容錯(cuò)學(xué)習(xí)問(wèn)題(Ring learning with errors,簡(jiǎn)稱RLWE)構(gòu)造出一種不依賴?yán)硐敫竦娜瑧B(tài)加密方案。

然而,現(xiàn)有的基于模運(yùn)算的全同態(tài)加密處理方法都存在一些不可忽略的問(wèn)題:首先,其在加密過(guò)程中存在著密文乘法噪音難以控制的問(wèn)題,導(dǎo)致加密結(jié)果無(wú)法被正確解密;其次,由于明文求和結(jié)果等于進(jìn)制時(shí),其密文求和的結(jié)果在解密過(guò)程中必然會(huì)出錯(cuò),由此會(huì)導(dǎo)致加密結(jié)果無(wú)法被正確解密。



技術(shù)實(shí)現(xiàn)要素:

針對(duì)現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種基于模運(yùn)算的全同態(tài)加密處理方法,其目的在于,解決現(xiàn)有的基于模運(yùn)算的全同態(tài)加密處理方法中,由于密文乘法噪音難以控制,以及密文加法的結(jié)果等于進(jìn)制時(shí)密文求和的結(jié)果在解密過(guò)程中出錯(cuò)所導(dǎo)致的加密結(jié)果無(wú)法被正確解密的技術(shù)問(wèn)題。

為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供了一種基于模運(yùn)算的全同態(tài)加密處理方法,包括以下步驟:

(1)獲取加密過(guò)程中任意數(shù)值數(shù)據(jù)類型的明文,并根據(jù)加密需要將其轉(zhuǎn)換為對(duì)應(yīng)的進(jìn)制位明文;

(2)對(duì)步驟(1)中得到的進(jìn)制位明文中的各個(gè)數(shù)進(jìn)行加密運(yùn)算,將加密運(yùn)算得到的密文進(jìn)行組合,從而得到對(duì)應(yīng)的密文組合;

(3)采用基于模加密的密文原碼、密文反碼和密文補(bǔ)碼對(duì)步驟(2)得到的密文組合進(jìn)行密文運(yùn)算;

(4)利用模除法對(duì)步驟(3)獲取的密文運(yùn)算結(jié)果進(jìn)行解密,以獲得解密后的明文。

優(yōu)選地,步驟(2)中加密運(yùn)算是采用以下公式:

c=(m+s*r+p*r)mod x0

其中c表示密文,m表示明文中的進(jìn)制位,s表示加密中所采用的進(jìn)制,r表示隨機(jī)數(shù),p為加密密鑰,x0是一個(gè)中間變量,其等于加密密鑰p與另一個(gè)加密密鑰q的乘積,所述密鑰均不對(duì)外公開(kāi)。

優(yōu)選地,步驟(4)具體是采用以下公式:(c mod p)mod s。

優(yōu)選地,步驟(3)中,對(duì)于密文加法運(yùn)算,直接將兩個(gè)密文組合進(jìn)行對(duì)位求和運(yùn)算。

優(yōu)選地,步驟(3)中,對(duì)于密文減法運(yùn)算,首先獲取減數(shù)的密文組合的反碼,然后根據(jù)該反碼獲取對(duì)應(yīng)的補(bǔ)碼,最后將該補(bǔ)碼與被減數(shù)的密文組合的原碼進(jìn)行對(duì)位求和運(yùn)算。

優(yōu)選地,步驟(3)中,對(duì)于密文乘法運(yùn)算,首先根據(jù)密文組合c1和c2中元素的個(gè)數(shù)n創(chuàng)建一個(gè)n*(2n-1)的矩陣,該矩陣的第一行從右至左的元素分別為:c1中最右側(cè)元素與c2中最右側(cè)元素的乘積、c1中右側(cè)倒數(shù)第二個(gè)元素與c2中最右側(cè)元素的乘積、以此類推、c1中左側(cè)第一個(gè)元素與c2中最右側(cè)元素的乘積;該矩陣的第二行從右至左的元素分別為:1個(gè)0、c1中最右側(cè)元素與c2中右側(cè)倒數(shù)第二個(gè)元素的乘積、c1中右側(cè)倒數(shù)第二個(gè)元素與c2中右側(cè)倒數(shù)第二個(gè)元素的乘積、以此類推、c1中左側(cè)第一個(gè)元素與c2中右側(cè)倒數(shù)第二個(gè)元素的乘積;…該矩陣的第n行從右至左的元素分別為:(n-1)個(gè)0,c1中最右側(cè)元素與c2中左側(cè)第一個(gè)元素的乘積、c1中右側(cè)倒數(shù)第二個(gè)元素與c2中左側(cè)第一個(gè)元素的乘積、以此類推、c1中左側(cè)第一個(gè)元素與c2中左側(cè)第一個(gè)元素的乘積,然后,將構(gòu)建的矩陣的每列進(jìn)行求和,從而得到一個(gè)新的行向量,取該行向量作為密文乘法運(yùn)算的結(jié)果,最后,取該行向量作為密文乘法運(yùn)算的結(jié)果。

優(yōu)選地,步驟(3)中,對(duì)于密文除法運(yùn)算,其包括以下子步驟:

(3-4-1)創(chuàng)建空的除法運(yùn)算結(jié)果的存儲(chǔ)格式,該存儲(chǔ)格式的總長(zhǎng)度為32位、64位或80位,且包括符號(hào)位、整數(shù)位和小數(shù)位,并根據(jù)該存儲(chǔ)格式對(duì)二進(jìn)制位明文進(jìn)行擴(kuò)展;

(3-4-2)根據(jù)步驟(2)的算法對(duì)擴(kuò)展后的二進(jìn)制位明文進(jìn)行加密運(yùn)算,將加密運(yùn)算結(jié)果進(jìn)行組合,從而得到對(duì)應(yīng)的密文分別作為被除數(shù)和除數(shù);

(3-4-3)用步驟(2)中得到的1的密文乘以作為除數(shù)的密文;

(3-4-4)設(shè)置小數(shù)位計(jì)數(shù)器count的初始值等于存儲(chǔ)格式的長(zhǎng)度-L,其中L是存儲(chǔ)格式中整數(shù)位的長(zhǎng)度;

(3-4-5)判斷被除數(shù)的密文是否大于除數(shù)的密文,如果大于轉(zhuǎn)步驟(3-4-6),否則轉(zhuǎn)步驟(3-4-7);

(3-4-6)將被除數(shù)的密文與步驟(3-4-3)中的除數(shù)密文的補(bǔ)碼做加法,得到余數(shù)作為新的被除數(shù),并且在整數(shù)位用1的密文做加法,即得到的是密文商,并返回步驟(3-4-5);

(3-4-7)判斷余數(shù)的密文是否全部為零或小數(shù)位計(jì)數(shù)器count大于存儲(chǔ)格式的總長(zhǎng)度,如果不是,則轉(zhuǎn)步驟(3-4-8);如果是,則密文除法運(yùn)算結(jié)束,并轉(zhuǎn)入步驟(3-4-13),以獲得密文除法運(yùn)算結(jié)果;

(3-4-8)在余數(shù)密文的最右邊添加0的密文,得到新的余數(shù)密文,并轉(zhuǎn)步驟(3-4-9);

(3-4-9)判斷步驟(3-4-8)得到新的余數(shù)密文是否大于除數(shù)的密文,如果是大于則轉(zhuǎn)步驟(3-4-10)步驟,否則轉(zhuǎn)(3-4-11);

(3-4-10)將新的余數(shù)密文與除數(shù)的密文補(bǔ)碼做加法,以再次獲得新的余數(shù)密文,同時(shí)將第count個(gè)小數(shù)位的值設(shè)置為1對(duì)應(yīng)的密文值;

(3-4-11)將第count個(gè)小數(shù)位的值設(shè)置為0對(duì)應(yīng)的密文值,然后轉(zhuǎn)步驟(3-4-12);

(3-4-12)將小數(shù)位計(jì)數(shù)器count加1,然后返回步驟(3-4-7);

(3-4-13)根據(jù)得到的密文值獲取商的整數(shù)部分和小數(shù)部分,并按步驟(3-4-1)中的存儲(chǔ)格式進(jìn)行存放。

優(yōu)選地,商的整數(shù)部分等于:

xL*20+xL-1*21+…+x1*2L-1,其中x表示整數(shù)部分中的密文值;

商的小數(shù)部分等于:

y1*2-1+y2*2-2+…+y存儲(chǔ)格式的總長(zhǎng)度-L*2存儲(chǔ)格式的總長(zhǎng)度-L,其中y表示小數(shù)部分中的密文值。

優(yōu)選地,步驟(3-4-5)具體為,判斷被除數(shù)的密文是否大于除數(shù)的密文,是從左到右以遍歷的方式判斷被除數(shù)中的每一位是否大于或等于除數(shù)中的對(duì)應(yīng)位,如果一旦有其中一位小于除數(shù)中的對(duì)應(yīng)位,則表示被除數(shù)的密文不是大于除數(shù)的密文。

優(yōu)選地,在密文加法運(yùn)算中,首先將密文的每一位根據(jù)解密公式(密文mod p)mod s求出對(duì)應(yīng)的明文,并將得到的明文按位進(jìn)行求和相加,接下來(lái)判斷每個(gè)位求和后得到的值是否等于進(jìn)制,如果等于,則表示出現(xiàn)了進(jìn)位,此時(shí)返回進(jìn)位值,并返回密文位求和的結(jié)果,并且在該密文位的上一位求和過(guò)程中加1;如果不等于,則表示沒(méi)有出現(xiàn)進(jìn)位,此時(shí)返回進(jìn)位值以及密文位求和的結(jié)果,并且在該密文位的上一位求和過(guò)程中加0。

總體而言,通過(guò)本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,能夠取得下列有益效果:

(1)本發(fā)明能夠解決現(xiàn)有方法中由于密文乘法噪音難以控制導(dǎo)致的加密結(jié)果無(wú)法被正確解密的技術(shù)問(wèn)題:由于本發(fā)明采用了加密過(guò)程中的進(jìn)位機(jī)制和密文計(jì)算結(jié)果的刷新,能夠解決全同態(tài)加密過(guò)程中出現(xiàn)的噪音問(wèn)題。

(2)本發(fā)明能夠解決現(xiàn)有方法中密文加法的結(jié)果等于進(jìn)制時(shí),密文求和的結(jié)果在解密過(guò)程中出錯(cuò)所導(dǎo)致的加密結(jié)果無(wú)法被正確解密的技術(shù)問(wèn)題:由于本發(fā)明采用了加密過(guò)程中的進(jìn)位機(jī)制,該機(jī)制通過(guò)判斷密文求和結(jié)果是否等于進(jìn)制來(lái)確定是否需要進(jìn)行進(jìn)位操作,從而解決了密文加法出錯(cuò)的問(wèn)題。

(3)本發(fā)明通過(guò)模加密的密文原碼、密文反碼和密文補(bǔ)碼,能夠?qū)崿F(xiàn)任意數(shù)據(jù)密文之間的加減乘除運(yùn)算,從而進(jìn)一步擴(kuò)展了本發(fā)明的應(yīng)用場(chǎng)景,并提升了應(yīng)用場(chǎng)景密文計(jì)算過(guò)程中的數(shù)據(jù)安全性。

附圖說(shuō)明

圖1是本發(fā)明基于模運(yùn)算的全同態(tài)加密處理方法的流程圖。

圖2是本發(fā)明方法中執(zhí)行密文除法計(jì)算過(guò)程的流程圖。

具體實(shí)施方式

為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。

進(jìn)制位:根據(jù)進(jìn)制所確定的位的數(shù)量,例如:二進(jìn)制就是1位,八進(jìn)制就是3位,16進(jìn)制就是4位,32進(jìn)制就是5位,64進(jìn)制就是6位,128進(jìn)制就是7位。

本發(fā)明的方法采用基于模加密的密文原碼、密文反碼和密文補(bǔ)碼實(shí)現(xiàn)了所有數(shù)據(jù)類型的加密、解密和密文計(jì)算。該方法通過(guò)構(gòu)造電路函數(shù)刷新密文實(shí)現(xiàn)了算術(shù)運(yùn)算、關(guān)系運(yùn)算和邏輯運(yùn)算的密文計(jì)算,其中算術(shù)運(yùn)算包括加、減、乘、除(+,-,*,/),關(guān)系運(yùn)算包括小于、小于等于、大于、大于等于、等于和不等于(<,≤,>,≥,=,≠),邏輯運(yùn)算包括與、或和非(and,or,not)等操作。

一種基于模運(yùn)算的全同態(tài)加密處理方法包含有數(shù)據(jù)表示、密鑰生成、加密算法、解密算法以及密文運(yùn)算(Ciphertext Operation,簡(jiǎn)稱CO)。

數(shù)據(jù)表示:記明文m的類型(Type)為T(mén),T的集合為{整數(shù)、實(shí)數(shù)、字符、日期、布爾型}等,已知明文ms,其中:s表示數(shù)據(jù)進(jìn)制(System),即二進(jìn)制、十進(jìn)制、十六進(jìn)制、521進(jìn)制等等,記作(T,ms);例如:s=2表示二進(jìn)制,二進(jìn)制通常用B表示,明文m表示為二進(jìn)制位mB,記作(T,mB);s=16表示十六進(jìn)制,十六進(jìn)制通常用H表示,明文m表示為十六進(jìn)制位mH,記作(T,mH);s=512表示512進(jìn)制,明文m表示為512進(jìn)制位m512,記作(T,m512)等。

密鑰生成(KeyGen):選擇一個(gè)大奇數(shù)p,計(jì)算x0=q0*p+s*r,x0必須是一個(gè)奇數(shù),否則重新計(jì)算。隨機(jī)生成τ個(gè)數(shù),計(jì)算xi=qi*p+s*r,其中:0≤i≤τ,qi<<q0、r是隨機(jī)數(shù)。用于非對(duì)稱算法的公鑰為pk=(x0,x1,…,xi,…xτ),私鑰為p;用于對(duì)稱算法的密鑰為(x0,p)。為了清晰的表達(dá)加密、解密和密文計(jì)算的算法描述引入工作密鑰Wkey(pk,p)。

加密算法(Enc):由KeyGen生成的工作密鑰Wkey,對(duì)于任意的一個(gè)數(shù)m加密。將m轉(zhuǎn)換成二進(jìn)制mB表示為B,B=(b1,b2,…,bi,…,bn),bi∈{0,1},1≤i≤n,c=Enc(Wkey,B),c是采用加密算法f得到c=(c1,c2,…,ci,…,cn),其中:r是隨機(jī)數(shù)。

解密算法(Dec):由KeyGen生成的工作密鑰Wkey,對(duì)輸入的密文數(shù)據(jù)c,b’=Dec(Wkey,ci),b’是采用解密算法f’得到b’=(b1’,b2’,…,bi’,…,bn’),其中:b’=f’(Wkey,ci)=(ci mod p)mod s,1≤i≤n,將s進(jìn)制b’轉(zhuǎn)換成明文m。

密文運(yùn)算(CO):由KeyGen生成的工作密鑰Wkey,對(duì)于輸入的兩個(gè)密文數(shù)據(jù)c1、c2,c’=CO(Wkey,c1 O c2),c’是采用構(gòu)造的密文運(yùn)算函數(shù)f”計(jì)算得到c’=(c1’,c2’,…,ci’,…,cn’)

ci’=f”(Wkey,c1i’O c2i’)

其中:1≤i≤n,O∈{+,-,*,/……}

構(gòu)造密文運(yùn)算函數(shù)f”來(lái)實(shí)現(xiàn)密文計(jì)算,其密文計(jì)算過(guò)程是根據(jù)加密算法f推導(dǎo)出如下判斷規(guī)則。

以s=2二進(jìn)制為例:假設(shè)

c1=m1+2*r1+p*r1 mod x0

c2=m2+2*r2+p*r2 mod x0;

c=c1+c2=(m1+m2)+2*r1+p*r1+2*r2+p*r2

=(m1+m2)+2*(r1+r2)+p*(r1+r2)

c=c1*c2=(m1+2*r1+p*r1)(m2+2*r2+p*r2)

=m1*m2+m1*2*r2+m1*p*r2+2*r1*m2+2*r1*2*r2+2*r1*p*r2+p*r1*m2+p*r1*2*r2+p*r1*p*r2

=m1*m2+2*(m1*r2+m2*r1+2*r1*r2)+p*(m1*r2+4*r1*r2+r1*m2+r1*p*r2)

對(duì)密文c mod p后,密文計(jì)算的加法和乘法噪音公式如下:

c=(c1+c2)mod p=(m1+m2)+2(r1+r2) (1)

c=(c1*c2)mod p=m1*m2+2*(m1*r2+m2*r1+2*r1*r2) (2)

當(dāng)明文(m1=0,m2=0),(m1=0,m2=1),(m1=1,m2=0),(m1=1,m2=1)時(shí):

加法的密文計(jì)算判斷規(guī)則為:

c=0+2(r1+r2);(c mod p)mod 2=0;解密正確

c=1+2(r1+r2);(c mod p)mod 2=1;解密正確

c=1+2(r1+r2);(c mod p)mod 2=1;解密正確

c=2+2(r1+r2);(c mod p)mod 2=0;解密錯(cuò)誤

乘法的密文計(jì)算判斷規(guī)則為:

c=0+4r1r2;(c mod p)mod 2=0;解密正確

c=0+2(r1+2r1r2);(c mod p)mod 2=0;解密正確

c=0+2(r2+2r1r2);(c mod p)mod 2=0;解密正確

c=1+2(r1+r2+2r1r2);(c mod p)mod 2=1;解密正確

根據(jù)以上分析,從噪音公式(1)可知當(dāng)明文(m1=1,m2=1)時(shí),密文加法計(jì)算時(shí)得到的密文結(jié)果是錯(cuò)誤的,即解密時(shí)一定會(huì)出錯(cuò)。從噪音公式(2)可知兩個(gè)密文的乘積使得噪音成指數(shù)級(jí)的增漲,一旦模p后的結(jié)果不在(-p/s,p/s]范圍內(nèi),解密也一定會(huì)出錯(cuò)。掌握這個(gè)規(guī)律后,構(gòu)造兩個(gè)電路函數(shù)如下。

1、電路函數(shù)f1

功能描述:二進(jìn)制密文計(jì)算,解決密文計(jì)算時(shí)的噪音問(wèn)題。

輸入?yún)?shù):工作密鑰Wkey(x0,p),密文c1、c2,操作符op。

輸出參數(shù):返回計(jì)算的密文c,返回進(jìn)位標(biāo)識(shí)flag,1表示進(jìn)位,0表示不進(jìn)位。

密文計(jì)算步驟如下:

步驟1:初始化c=0,flag=0。

步驟2:如果op等于add轉(zhuǎn)步驟3,否則密文相乘c=c1*c2,轉(zhuǎn)步驟4。

步驟3:判斷兩個(gè)密文((c1 mod p)mod 2)and((c2 mod p)mod 2)是否為真,如果為真密文相加c=c1+c2,flag=1。

步驟4:返回刷新密文c和進(jìn)位標(biāo)識(shí)flag。

2、電路函數(shù)f2

功能描述:判斷二進(jìn)制位密文大小,解決密文除法計(jì)算時(shí)是否能夠繼續(xù)做減法。

輸入?yún)?shù):工作密鑰Wkey(x0,p),密文c1、c2。

輸出參數(shù):如果c1≥c2,返回結(jié)果值flag為真,否則flag為假。

密文計(jì)算步驟如下:

步驟1:初始化flag=假;

步驟2:判斷兩個(gè)密文((c1 mod p)mod 2)≥((c2 mod p)mod 2)是否為真,如果為真flag=真。

步驟3:返回flag的值。

如圖1所示,本發(fā)明的基于模運(yùn)算的全同態(tài)加密處理方法包括以下步驟:

(1)獲取加密過(guò)程中任意數(shù)值數(shù)據(jù)類型的明文,并根據(jù)加密需要將其轉(zhuǎn)換為對(duì)應(yīng)的進(jìn)制位明文;舉例而言,

例1,兩個(gè)明文分別為m1=5,m2=3,需要分別對(duì)其進(jìn)行二進(jìn)制位加密,則得到的二進(jìn)制位明文分別為101和011;

例2,兩個(gè)明文分別為m1=7,m2=3,需要分別對(duì)其進(jìn)行二進(jìn)制位加密,則得到的二進(jìn)制位明文分別為111和011;

例3,兩個(gè)明文分別為m1=7,m2=2,需要分別對(duì)其進(jìn)行二進(jìn)制位加密,則得到的二進(jìn)制位明文分別為111和010;

(2)對(duì)步驟(1)中得到的進(jìn)制位明文中的各個(gè)數(shù)進(jìn)行加密運(yùn)算,將加密運(yùn)算得到的密文進(jìn)行組合,從而得到對(duì)應(yīng)的密文組合,加密運(yùn)算具體是采用以下公式:

c=(m+s*r+p*r)mod x0

其中c表示密文,m表示明文中的進(jìn)制位,s表示加密中所采用的進(jìn)制(例如二進(jìn)制,則s=2;十六進(jìn)制,則s=16),r表示隨機(jī)數(shù),p為加密密鑰,x0是一個(gè)中間變量,其等于加密密鑰p與另一個(gè)加密密鑰q(其中p和q均是奇數(shù))的乘積,上述密鑰都是對(duì)外不公開(kāi)。

例如,假設(shè)工作密鑰p=111,q=11,x0=p*q=1221,令r=1,則對(duì)于明文5的二進(jìn)制位明文101和明文3的二進(jìn)制位明文011中的數(shù)0和1而言,使用本步驟的上述公式計(jì)算后,可得到:

數(shù)0加密后的密文等于113;

數(shù)1加密后的密文等于114;

舉例而言,

例1:明文5的二進(jìn)制位明文為101經(jīng)過(guò)加密后的密文組合變成了c1=(114,113,114);明文3的二進(jìn)制位明文011經(jīng)過(guò)加密后的密文變成了c2=(113,114,114);

例2:明文7的二進(jìn)制位明文為111經(jīng)過(guò)加密后的密文組合變成了c1=(114,114,114);明文3的二進(jìn)制位明文011經(jīng)過(guò)加密后的密文變成了c2=(113,114,114)。

例3:明文7的二進(jìn)制位明文為111經(jīng)過(guò)加密后的密文組合變成了c1=(114,114,114);明文2的二進(jìn)制位明文010經(jīng)過(guò)加密后的密文變成了c2=(113,114,113)。

(3)采用基于模加密的密文原碼、密文反碼和密文補(bǔ)碼對(duì)步驟(2)得到的密文組合進(jìn)行密文運(yùn)算;如圖2所示,本步驟具體包括以下子步驟:

(3-1)對(duì)于密文加法運(yùn)算,直接將兩個(gè)密文組合進(jìn)行對(duì)位求和運(yùn)算;

對(duì)于上面的示例而言,即為:

例1:c1+c2=(114,113,114)+(113,114,114);

例2:c1+c2=(114,114,114)+(113,114,114);

例3:c1+c2=(114,114,114)+(113,114,113);

在密文加法運(yùn)算中,首先需要將密文的每一位根據(jù)解密公式(密文mod p)mod s求出對(duì)應(yīng)的明文,并將得到的明文按位進(jìn)行求和相加,接下來(lái)判斷每個(gè)位求和后得到的值是否等于進(jìn)制,如果等于,則表示出現(xiàn)了進(jìn)位,此時(shí)返回進(jìn)位值(即1),并返回密文位求和的結(jié)果(即實(shí)現(xiàn)了密文求和結(jié)果的刷新),并且在該密文位的上一位求和過(guò)程中加1;如果不等于,則表示沒(méi)有出現(xiàn)進(jìn)位,此時(shí)返回進(jìn)位值(即0)以及密文位求和的結(jié)果,并且在該密文位的上一位求和過(guò)程中加0。

在以下的密文減法、乘法、除法運(yùn)算中,都會(huì)出現(xiàn)加法進(jìn)位的情況,其處理方式與上述進(jìn)位過(guò)程完全相同,以下再不贅述。

例1:c1+c2=(114,228,228,228)

例2:c1+c2=(114,228,229,228)

例3:c1+c2=(114,228,228,227)

用解密算法m=(c mod p)mod 2驗(yàn)證密文計(jì)算是正確的,舉例而言,

例1:解密密文c1+c2計(jì)算結(jié)果:(114,228,228,228)=(1000)=8

例2:解密密文c1+c2計(jì)算結(jié)果:(114,228,229,228)=(1010)=10

例3:解密密文c1+c2計(jì)算結(jié)果:(114,228,228,227)=(1001)=9

(3-2)對(duì)于密文減法運(yùn)算,首先獲取減數(shù)的密文組合的反碼,然后根據(jù)該反碼獲取對(duì)應(yīng)的補(bǔ)碼,最后將該補(bǔ)碼與被減數(shù)的密文組合的原碼進(jìn)行對(duì)位求和運(yùn)算;

對(duì)于上面的示例而言,即為:

首先,獲取密文組合c2的反碼,其具體等于進(jìn)制的數(shù)量-進(jìn)制位-1;

對(duì)于c2而言,其明文原碼是011,第一位0對(duì)應(yīng)的反碼是2-0-1=1,第二位1對(duì)應(yīng)的反碼是2-1-1=0,第三位是2-1-1=0,因此其反碼就是100,對(duì)應(yīng)的密文反碼是對(duì)密文原碼的每一位加1。

舉例而言,

例1:c2反碼=(114,115,115);

例2:c2反碼=(114,115,115);

例3:c2反碼=(114,115,114);

然后通過(guò)對(duì)反碼中最后一位加1得到密文組合c2的補(bǔ)碼:

例1:c2補(bǔ)碼=(114,115,116);

例2:c2補(bǔ)碼=(114,115,116);

例3:c2補(bǔ)碼=(114,116,115);

最后將c1的原碼與c2的補(bǔ)碼做加法,得到:

例1:c1-c2=c1原碼+c2補(bǔ)碼=(114,113,114)+(114,115,116)=(228,229,230)

例2:c1-c2=c1原碼+c2補(bǔ)碼=(114,114,114)+(114,115,116)=(229,230,230)

例3:c1-c2=c1原碼+c2補(bǔ)碼=(114,114,114)+(114,116,115)=(229,230,229)

應(yīng)該注意的是,在上述密文計(jì)算過(guò)程中會(huì)出現(xiàn)進(jìn)位情況,下面用解密算法m=(c mod p)mod 2驗(yàn)證密文計(jì)算是正確的,舉例而言,

例1:解密密文c1-c2計(jì)算結(jié)果:(228,229,230)=(010)=2;

例2:解密密文c1-c2計(jì)算結(jié)果:(229,230,230)=(100)=4;

例3:解密密文c1-c2計(jì)算結(jié)果:(229,230,229)=(101)=5;

(3-3)對(duì)于密文乘法運(yùn)算,首先根據(jù)密文組合c1和c2中元素的個(gè)數(shù)n(在本實(shí)施方式中n=3)創(chuàng)建一個(gè)n*(2n-1)的矩陣,該矩陣的第一行從右至左的元素分別為:c1中最右側(cè)元素與c2中最右側(cè)元素的乘積、c1中右側(cè)倒數(shù)第二個(gè)元素與c2中最右側(cè)元素的乘積、…c1中左側(cè)第一個(gè)元素與c2中最右側(cè)元素的乘積;該矩陣的第二行從右至左的元素分別為:1個(gè)0、c1中最右側(cè)元素與c2中右側(cè)倒數(shù)第二個(gè)元素的乘積、c1中右側(cè)倒數(shù)第二個(gè)元素與c2中右側(cè)倒數(shù)第二個(gè)元素的乘積、…c1中左側(cè)第一個(gè)元素與c2中右側(cè)倒數(shù)第二個(gè)元素的乘積;…該矩陣的第n行從右至左的元素分別為:(n-1)個(gè)0,c1中最右側(cè)元素與c2中左側(cè)第一個(gè)元素的乘積、c1中右側(cè)倒數(shù)第二個(gè)元素與c2中左側(cè)第一個(gè)元素的乘積、…c1中左側(cè)第一個(gè)元素與c2中左側(cè)第一個(gè)元素的乘積。

然后,將構(gòu)建的矩陣的每列進(jìn)行求和,從而得到一個(gè)新的行向量,取該行向量作為密文乘法運(yùn)算的結(jié)果。舉例而言,

例1:針對(duì)上述示例而言,首先將c1(114,113,114)和c2(113,114,114)相乘,并根據(jù)以上規(guī)則構(gòu)建一個(gè)3行5列的矩陣如下:

然后將該矩陣的每一列求和,從而得到以下行向量:

(12882 25765 38770 25878 12996)

最后,取該行向量作為密文乘法運(yùn)算的結(jié)果,即c1*c2=(12882,25765,38770,25878,12996)。

例2:針對(duì)上述示例而言,首先將c1(114,114,114)和c2(113,114,114)相乘,并根據(jù)以上規(guī)則構(gòu)建一個(gè)3行5列的矩陣如下:

然后將該矩陣的每一列求和,從而得到以下行向量:

(12883 25879 38875 25992 12996)

最后,取該行向量作為密文乘法運(yùn)算的結(jié)果,即c1*c2=(12883,25879,38875,25992,12996)。

例3:針對(duì)上述示例而言,首先將c1(114,114,114)和c2(113,114,113)相乘,并根據(jù)以上規(guī)則構(gòu)建一個(gè)3行5列的矩陣如下:

然后將該矩陣的每一列求和,從而得到以下行向量:

(12882 25878 38760 25878 12882)

最后,取該行向量作為密文乘法運(yùn)算的結(jié)果,即c1*c2=(12882,25878,38760,25878,12882)。

應(yīng)該注意的是,在上述密文計(jì)算過(guò)程中會(huì)出現(xiàn)進(jìn)位情況,下面用解密算法m=(c mod p)mod 2驗(yàn)證密文計(jì)算是正確的,舉例而言,

例1:解密密文c1*c2計(jì)算結(jié)果:

(12882,25765,38770,25878,12996)=(01111)=15;

例2:解密密文c1*c2計(jì)算結(jié)果:

(12883,25879,38875,25992,12996)=(10101)=21;

例3:解密密文c1*c2計(jì)算結(jié)果:

(12882,25878,38760,25878,12882)=(01110)=14;

(3-4)對(duì)于密文除法運(yùn)算,其包括以下子步驟:

(3-4-1)創(chuàng)建空的除法運(yùn)算結(jié)果的存儲(chǔ)格式,該存儲(chǔ)格式的總長(zhǎng)度符合IEEE754標(biāo)準(zhǔn),為32位、64位或80位,且包括符號(hào)位、整數(shù)位和小數(shù)位,并根據(jù)該存儲(chǔ)格式對(duì)二進(jìn)制位明文進(jìn)行擴(kuò)展;

需要注意的是,在存儲(chǔ)格式中,第一位是符號(hào)位,其取值等于0或1,用于分別表示密文的正負(fù)數(shù);整數(shù)位的長(zhǎng)度也同時(shí)符合IEEE754標(biāo)準(zhǔn),并表示為L(zhǎng);那么剩下的小數(shù)位長(zhǎng)度就是(存儲(chǔ)格式的總長(zhǎng)度-L),具體如以下格式所示:

使用該存儲(chǔ)格式的目的在于,分別計(jì)算出除法運(yùn)算的商的整數(shù)部分和小數(shù)部分,其中,商的整數(shù)部分等于xL*20+xL-1*21+…+x1*2L-1,其中x表示整數(shù)部分中的密文值;

商的小數(shù)部分等于:

y1*2-1+y2*2-2+…+y存儲(chǔ)格式的總長(zhǎng)度-L*2存儲(chǔ)格式的總長(zhǎng)度-L,

其中y表示小數(shù)部分中的密文值。

舉例而言,為了簡(jiǎn)單表示和方便描述起見(jiàn),以存儲(chǔ)格式長(zhǎng)度8位為例進(jìn)行說(shuō)明:從左至右第1位為符號(hào)位,第2~4位為整數(shù)位,第5~8位為小數(shù)位。并將步驟(1)中得到的二進(jìn)制位明文進(jìn)行擴(kuò)展,擴(kuò)展后的明文長(zhǎng)度為8位,擴(kuò)展位均用數(shù)字0進(jìn)行填充,舉例而言,

例1:步驟(1)中的二進(jìn)制位明文101被擴(kuò)展為00000101,二進(jìn)制位明文011被擴(kuò)展為00000011;

例2:步驟(1)中的二進(jìn)制位明文111被擴(kuò)展為00000111,二進(jìn)制位明文011被擴(kuò)展為00000011;

例3:步驟(1)中的二進(jìn)制位明文111被擴(kuò)展為00000111,二進(jìn)制位明文010被擴(kuò)展為00000010。

(3-4-2)根據(jù)步驟(2)的算法對(duì)擴(kuò)展后的二進(jìn)制位明文進(jìn)行加密運(yùn)算,將加密運(yùn)算結(jié)果進(jìn)行組合,從而得到對(duì)應(yīng)的密文分別作為被除數(shù)和除數(shù);舉例而言,

例1:上述擴(kuò)展后的明文00000101和00000011,經(jīng)過(guò)本過(guò)程的運(yùn)算,分別被變?yōu)榱?113,113,113,113,113,114,113,114)(00000101)和(113,113,113,113,113,113,114,114)(00000011);

例2:上述擴(kuò)展后的明文00000111和00000011,經(jīng)過(guò)本過(guò)程的運(yùn)算,分別被變?yōu)榱?113,113,113,113,113,114,114,114)(00000111)和(113,113,113,113,113,113,114,114)(00000011);

例3:上述擴(kuò)展后的明文00000111和00000010,經(jīng)過(guò)本過(guò)程的運(yùn)算,分別被變?yōu)榱?113,113,113,113,113,114,114,114)(00000111)和(113,113,113,113,113,113,114,113)(00000010);

(3-4-3)用步驟(2)中得到的1的密文乘以作為除數(shù)的密文,舉例而言,

例1:密文114乘以(113,113,113,113,113,113,114,114)(00000011),即得到密文組合(12882,12882,12882,12882,12882,12882,12996,12996)(00000011),并對(duì)其乘積求密文補(bǔ)碼,求密文補(bǔ)碼的步驟與上述步驟(3-2)完全相同,乘積求補(bǔ)碼后得到密文組合為(12883,12883,12883,12883,12883,12883,12997,12998)(11111101);例2的密文補(bǔ)碼與例1相同。

例3:密文114乘以(113,113,113,113,113,113,114,113)(00000010),即得到密文組合(12882,12882,12882,12882,12882,12882,12996,12882)(00000010),并對(duì)其乘積求密文補(bǔ)碼,求密文補(bǔ)碼的步驟與上述步驟(3-2)完全相同,乘積求補(bǔ)碼后得到密文組合為(12883,12883,12883,12883,12883,12883,12998,12884)(11111110)。

(3-4-4)設(shè)置小數(shù)位計(jì)數(shù)器count的初始值等于(存儲(chǔ)格式的長(zhǎng)度-L);

(3-4-5)判斷被除數(shù)的密文是否大于除數(shù)的密文,如果大于轉(zhuǎn)(3-4-6)步驟,否則轉(zhuǎn)(3-4-7)步驟;

具體而言,判斷被除數(shù)的密文是否大于除數(shù)的密文,是從左到右以遍歷的方式判斷被除數(shù)中的每一位是否大于或等于除數(shù)中的對(duì)應(yīng)位,如果一旦有其中一位小于除數(shù)中的對(duì)應(yīng)位,則表示被除數(shù)的密文不是大于除數(shù)的密文;

(3-4-6)將被除數(shù)的密文與步驟(3-4-3)中的除數(shù)密文的補(bǔ)碼做加法,得到余數(shù)作為新的被除數(shù),并且在整數(shù)位用1的密文做加法,即得到的是密文商,并返回步驟(3-4-5);

舉例而言,

例1:第1次循環(huán)計(jì)算得到的余數(shù)密文=被除數(shù)密文+除數(shù)密文補(bǔ)碼=(113,113,113,113,113,114,113,114)(00000101)+(12883,12883,12883,12883,12883,12883,12997,12998)(11111101)=(12997,12997,12997,12997,12997,12997,13111,13112)(00000010),應(yīng)注意本過(guò)程求和中會(huì)有進(jìn)位的情況,獲得余數(shù)密文后轉(zhuǎn)(3-4-5)步驟;

例2:第1次循環(huán)計(jì)算得到的余數(shù)密文=被除數(shù)密文+除數(shù)密文補(bǔ)碼=(113,113,113,113,113,114,114,114)(00000111)+(12883,12883,12883,12883,12883,12883,12997,12998)(11111101)=(12997,12997,12997,12997,12997,12998,13112,13112)(00000100),應(yīng)注意本過(guò)程求和中會(huì)有進(jìn)位的情況,獲得余數(shù)密文后轉(zhuǎn)(3-4-5)步驟;

第2次循環(huán)計(jì)算得到的余數(shù)密文=(12997,12997,12997,12997,12997,12998,13112,13112)(00000100)+(12883,12883,12883,12883,12883,12883,12997,12998)(11111101)=(25881,25881,25881,25881,25881,25881,26109,26110)(00000001)

例3:第1次循環(huán)計(jì)算得到的余數(shù)密文=被除數(shù)密文+除數(shù)密文補(bǔ)碼=(113,113,113,113,113,114,114,114)(00000111)+(12883,12883,12883,12883,12883,12883,12998,12884)(11111110)=(12997,12997,12997,12997,12997,12998,13112,12998)(00000101),應(yīng)注意本過(guò)程求和中會(huì)有進(jìn)位的情況,獲得余數(shù)密文后轉(zhuǎn)(3-4-5)步驟;

第2次循環(huán)計(jì)算得到的余數(shù)密文=(12997,12997,12997,12997,12997,12998,13112,12998)(00000101)+(12883,12883,12883,12883,12883,12883,12998,12884)(11111110)=(25881,25881,25881,25881,25881,25881,26110,25882)(00000011)

第3次循環(huán)計(jì)算得到的余數(shù)密文=(25881,25881,25881,25881,25881,25881,26110,25882)(00000011)+(12883,12883,12883,12883,12883,12883,12998,12884)(11111110)=(38765,38765,38763,38765,38765,38765,39108,38766)(00000001)

(3-4-7)判斷余數(shù)的密文是否全部為零或小數(shù)位計(jì)數(shù)器count大于存儲(chǔ)格式的總長(zhǎng)度,如果不是,則轉(zhuǎn)步驟(3-4-8);如果是,則密文除法運(yùn)算結(jié)束,并轉(zhuǎn)入步驟(3-4-13),以獲得密文除法運(yùn)算結(jié)果;

(3-4-8)在余數(shù)密文的最右邊添加0的密文,得到新的余數(shù)密文,并轉(zhuǎn)步驟(3-4-9),舉例而言,

例1:第1次循環(huán)得到新的余數(shù)密文為(12997,12997,12997,12997,12997,13111,13112,113)(00000100);

例2:第1次循環(huán)得到新的余數(shù)密文為(25881,25881,25881,25881,25881,26109,26110,113)(000000010);

第2次循環(huán)得到新的余數(shù)密文為(25881,25881,25881,25881,26109,26110,113,113)(0000000100);

例3:第1次循環(huán)得到新的余數(shù)密文為(38765,38763,38765,38765,38765,39108,38766,113)(00000010);

(3-4-9)判斷步驟(3-4-8)得到新的余數(shù)密文是否大于除數(shù)的密文,如果是大于則轉(zhuǎn)步驟(3-4-10)步驟,否則轉(zhuǎn)(3-4-11);

(3-4-10)將新的余數(shù)密文與除數(shù)的密文補(bǔ)碼做加法,以再次獲得新的余數(shù)密文,同時(shí)將第count個(gè)小數(shù)位的值設(shè)置為1對(duì)應(yīng)的密文值;例如:1的密文是114,然后轉(zhuǎn)步驟(3-4-12);舉例而言,

例1:更新的余數(shù)密文=新的余數(shù)密文+除數(shù)密文補(bǔ)碼=(12997,12997,12997,12997,12997,13111,13112,113)(00000100)+(12883,12883,12883,12883,12883,12883,12997,12998)(11111101)=(25881,25881,25881,25881,25881,25994,26109,13111)(00000001);

例2:更新的余數(shù)密文=新的余數(shù)密文+除數(shù)密文補(bǔ)碼=(25881,25881,25881,25881,26109,26110,113,113)(0000000100)+(12883,12883,12883,12883,12883,12883,12997,12998)(11111101)=(38765,38765,38765,38765,38993,38993,13110,13111)(00000001);

例3:更新的余數(shù)密文=新的余數(shù)密文+除數(shù)密文補(bǔ)碼=(38765,38763,38765,38765,38765,39108,38766,113)(00000010)+(12883,12883,12883,12883,12883,12883,12998,12884)(11111110)=(51649,51649,51649,51649,51649,51992,51764,12997)(00000000);

(3-4-11)將第count個(gè)小數(shù)位的值設(shè)置為0對(duì)應(yīng)的密文值,例如:0的密文是113,然后轉(zhuǎn)步驟(3-4-12);

(3-4-12)將小數(shù)位計(jì)數(shù)器count加1,然后返回步驟(3-4-7);

(3-4-13)根據(jù)得到的密文值獲取商的整數(shù)部分和小數(shù)部分,并按步驟(3-4-1)中的存儲(chǔ)格式進(jìn)行存放,舉例而言,

例1:整數(shù)部分執(zhí)行(3-4-6)步驟記下一次密文114,由于此例是一個(gè)無(wú)法整除的數(shù),所以直到小數(shù)位記滿,即小數(shù)位計(jì)數(shù)器count大于存儲(chǔ)格式的總長(zhǎng)度使得密文除法運(yùn)算結(jié)束,即小數(shù)部分在循環(huán)過(guò)程中執(zhí)行(3-4-10)、(3-4-11)、(3-4-10)、(3-4-11)四個(gè)步驟,分別在小數(shù)位的第5位到第8位記下的密文為114,113,114和113,即商的密文值為(113,113,113,114,114,113,114,113)。

例2:整數(shù)部分循環(huán)執(zhí)行(3-4-6)步驟2次,第1次在整數(shù)位的第4位記下一次密文值114,第2次在整數(shù)位的第4位加密文值114,所以整數(shù)位的密文值為113、114、228,由于此例是一個(gè)無(wú)法整除的數(shù),所以直到小數(shù)位記滿,即小數(shù)位計(jì)數(shù)器count大于存儲(chǔ)格式的總長(zhǎng)度使得密文除法運(yùn)算結(jié)束,即小數(shù)部分在循環(huán)過(guò)程中執(zhí)行(3-4-10)、(3-4-11)、(3-4-10)、(3-4-11)四個(gè)步驟,分別在小數(shù)位的第5位到第8位記下的密文值為113,114,113和114,即商的密文值(113,113,114,228,113,114,113,114)。

例3:整數(shù)部分循環(huán)執(zhí)行(3-4-6)步驟3次,第1次在整數(shù)位的第4位記下一次密文值114,第2次在整數(shù)位的第4位加密文值114,所以整數(shù)位的密文值為113、114、228,第3次在整數(shù)位的第4位加密文值114,所以整數(shù)位的密文值為113、114、342,由于此例是一個(gè)可以整除的數(shù),所以余數(shù)的密文全部為零使得密文除法運(yùn)算結(jié)束,即小數(shù)部分在循環(huán)過(guò)程中執(zhí)行(3-4-10)步驟,并且在小數(shù)位的第5位記下的密文值114,即商的密文值為(113,113,114,342,114,113,113,113)。

以上密文計(jì)算過(guò)程得到的結(jié)果與明文計(jì)算的結(jié)果一致,舉例而言,

例1:

c1/c2=5/3=(113,113,113,113,113,114,113,114)(00000101)/(113,113,113,113,113,113,114,114)(00000011)=(113,113,113,114,114,113,114,113)。

例2:

c1/c2=7/3=(113,113,113,113,113,114,114,114)(00000111)/(113,113,113,113,113,113,114,114)(00000011)=(113,113,114,228,113,114,113,114)。

例3:

c1/c2=7/2=(113,113,113,113,113,114,114,114)(00000111)/(113,113,113,113,113,113,114,114)(00000010)=(113,113,114,342,114,113,113,113)。

應(yīng)該注意的是,在上述密文計(jì)算過(guò)程中會(huì)出現(xiàn)進(jìn)位情況,下面用解密算法m=(c mod p)mod 2驗(yàn)證密文計(jì)算是正確的,舉例而言,

例1:解密密文c1/c2計(jì)算結(jié)果:(113,113,113,114,114,113,114,113)=(00011010)=1.625

說(shuō)明:由于此例的浮點(diǎn)數(shù)的小數(shù)位只有4位,所以結(jié)果為1.625;如果把小數(shù)位用7位來(lái)表示,那么結(jié)果是1.664063,這說(shuō)明小數(shù)位的精度是與保留小數(shù)位的長(zhǎng)度相關(guān)。

例2:解密密文c1/c2計(jì)算結(jié)果:(113,113,114,228,113,114,113,114)=(00100101)=2.3125

說(shuō)明:由于此例的浮點(diǎn)數(shù)的小數(shù)位只有4位,所以結(jié)果為2.3125;如果把小數(shù)位用8位來(lái)表示,那么結(jié)果是2.332031,這說(shuō)明小數(shù)位的精度是與保留小數(shù)位的長(zhǎng)度相關(guān)。

例3:解密密文c1/c2計(jì)算結(jié)果:(113,113,114,342,114,113,113,113)=(00111000)=3.5

以上進(jìn)行密文計(jì)算的結(jié)果表明,兩個(gè)明文加密后,進(jìn)行密文的加、減、乘、除的密文計(jì)算結(jié)果解密后與明文的計(jì)算結(jié)果相同。

(4)利用模除法對(duì)步驟(3)獲取的密文運(yùn)算結(jié)果進(jìn)行解密,以獲得解密后的明文;具體而言,是采用以下公式:(c mod p)mod s。

對(duì)于上述步驟中提到的所有示例而言,由于在加、減、乘、除加密運(yùn)算的末尾,都對(duì)隨后的解密過(guò)程和結(jié)果進(jìn)行了詳細(xì)描述,因此在本步驟中不單獨(dú)對(duì)其再進(jìn)行贅述。

本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
健康| 大丰市| 常宁市| 中西区| 金华市| 商河县| 桃江县| 盐边县| 庄河市| 衡南县| 景宁| 息烽县| 阿图什市| 顺义区| 镇安县| 英超| 缙云县| 苏尼特左旗| 正宁县| 志丹县| 普宁市| 昌吉市| 饶河县| 梁平县| 炉霍县| 孙吴县| 永宁县| SHOW| 古丈县| 江都市| 普定县| 阳江市| 奈曼旗| 余干县| 互助| 湘潭市| 无锡市| 阜新| 满城县| 田东县| 平遥县|