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

一種云關(guān)系數(shù)據(jù)庫(kù)的浮點(diǎn)數(shù)據(jù)的加密及查詢方法與流程

文檔序號(hào):11879111閱讀:484來(lái)源:國(guó)知局
一種云關(guān)系數(shù)據(jù)庫(kù)的浮點(diǎn)數(shù)據(jù)的加密及查詢方法與流程
本發(fā)明涉及計(jì)算機(jī)學(xué)科數(shù)據(jù)庫(kù)領(lǐng)域,特別涉及一種云關(guān)系數(shù)據(jù)庫(kù)的浮點(diǎn)數(shù)據(jù)的加密及查詢方法。
背景技術(shù)
:云計(jì)算提供了大容量的、低成本的數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)即服務(wù)DaaS(DatabaseasaService),越來(lái)越多的中小企業(yè)也為了降低投入成本和維護(hù)代價(jià),選擇了云計(jì)算的數(shù)據(jù)即服務(wù),將原有的系統(tǒng)移植到云中。隨之而來(lái)的就是數(shù)據(jù)的安全性,將敏感數(shù)據(jù)加密存貯是解決數(shù)據(jù)安全性的首要手段,如何保證數(shù)據(jù)安全性的同時(shí)又能維持?jǐn)?shù)據(jù)的高效查詢成為了數(shù)據(jù)即服務(wù)的關(guān)鍵技術(shù)問(wèn)題。針對(duì)云中的關(guān)系型數(shù)據(jù)庫(kù),麻省理工學(xué)院開(kāi)發(fā)了一個(gè)中間件CryptDB,廣泛應(yīng)用在Google、Amazon等云服務(wù)商。該中間件提供了對(duì)整型和字符型二種數(shù)據(jù)類(lèi)型的加密和加密數(shù)據(jù)上的查詢計(jì)算,但對(duì)浮點(diǎn)型數(shù)據(jù)的加密及加密數(shù)據(jù)的查詢計(jì)算還未解決。因此,針對(duì)浮點(diǎn)型數(shù)據(jù),有必要提供一種新的加密及查詢方法來(lái)滿足需求。技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺點(diǎn)與不足,提供一種云關(guān)系數(shù)據(jù)庫(kù)的浮點(diǎn)數(shù)據(jù)的加密及查詢方法。本發(fā)明的目的通過(guò)以下的技術(shù)方案實(shí)現(xiàn):一種云關(guān)系數(shù)據(jù)庫(kù)的浮點(diǎn)數(shù)據(jù)的加密及查詢方法,包含以下步驟:將浮點(diǎn)數(shù)據(jù)的密文插入到云數(shù)據(jù)庫(kù):A、用戶輸入包含浮點(diǎn)數(shù)據(jù)的插入語(yǔ)句,對(duì)浮點(diǎn)數(shù)進(jìn)行編碼,通過(guò)編碼規(guī)則將浮點(diǎn)數(shù)的小數(shù)點(diǎn)位置和正負(fù)號(hào)隱藏起來(lái);B、利用同態(tài)加密算法Paillier對(duì)編碼后的每一組分別進(jìn)行加密;C、將加密后的編碼值存入云數(shù)據(jù)庫(kù);對(duì)用戶對(duì)浮點(diǎn)數(shù)的SUM查詢:通過(guò)對(duì)存貯在云數(shù)據(jù)庫(kù)的浮點(diǎn)數(shù)不解密的情況下進(jìn)行SUM求和,具體步驟為:a、將存貯在云數(shù)據(jù)庫(kù)的浮點(diǎn)數(shù)密文轉(zhuǎn)換為雙鏈表二叉樹(shù);b、利用雙鏈表二叉樹(shù)分別對(duì)正浮點(diǎn)數(shù)、負(fù)浮點(diǎn)數(shù)求和得到X、Y,分開(kāi)求和的原因是受到同態(tài)加密算法Paillier的限制和省去對(duì)借位的處理;c、將云數(shù)據(jù)庫(kù)所求得的X、Y的密文傳送到用戶客戶端,再利用同態(tài)加密算法Paillier對(duì)X、Y進(jìn)行解密;d、解密后的二個(gè)和不符合我們的編碼規(guī)則,采用雙鏈表二叉樹(shù)的結(jié)構(gòu)對(duì)X、Y進(jìn)行校正,使X、Y符合編碼規(guī)則;e、對(duì)校正后的X、Y按編碼運(yùn)算規(guī)則進(jìn)行一次正、負(fù)數(shù)的求和運(yùn)算,得到浮點(diǎn)數(shù)的SUM函數(shù)最終結(jié)果的編碼值;f、將SUM函數(shù)編碼值按編碼規(guī)則進(jìn)行解碼即為用戶查詢的結(jié)果。在整個(gè)查詢計(jì)算過(guò)程中云數(shù)據(jù)庫(kù)的數(shù)據(jù)始終是密文,保證了存貯在云數(shù)據(jù)庫(kù)數(shù)據(jù)的安全性。步驟A中,所述編碼規(guī)則如下:將浮點(diǎn)數(shù)的編碼分為標(biāo)志位和數(shù)字組二部分:標(biāo)志位/指數(shù)位F,[數(shù)字組1,數(shù)字組2,……,數(shù)字組N,……,數(shù)字組20];(1)劃分:按照浮點(diǎn)數(shù)的十進(jìn)制小數(shù)形式以小數(shù)點(diǎn)為界,整數(shù)部分從小數(shù)點(diǎn)位置開(kāi)始向最高位方向每二位為一組,最高位不夠二位的補(bǔ)0;小數(shù)部分從小數(shù)點(diǎn)位置開(kāi)始向最低位方向每二位為一組,最低位不夠二位的補(bǔ)0;數(shù)字組的順序與浮點(diǎn)數(shù)十進(jìn)制數(shù)字順序一致;(2)符號(hào)位表示:設(shè)浮點(diǎn)數(shù)編碼的標(biāo)志位為F,標(biāo)志位F大于193的為正數(shù),標(biāo)志位F小于62的為負(fù)數(shù),標(biāo)志位F為193或62時(shí)分別表示正零或負(fù)零;(3)小數(shù)點(diǎn)位置:設(shè)浮點(diǎn)數(shù)編碼的標(biāo)志位為F,F(xiàn)-193+1為正數(shù)的整數(shù)部分的組數(shù),62-F+1為負(fù)數(shù)的整數(shù)部分的組數(shù),除掉整數(shù)部分的組數(shù)后剩余的組數(shù)為小數(shù)部分;(4)數(shù)字組的編碼:設(shè)劃分的每一組的數(shù)字值為N,正數(shù)的編碼為N,負(fù)數(shù)的編碼為100-N。所述步驟B具體為:1)由于標(biāo)志位隱藏著浮點(diǎn)數(shù)符號(hào)和小數(shù)點(diǎn)位置信息,標(biāo)志位F不進(jìn)行加密;2)按數(shù)字組順序,每個(gè)數(shù)字組N用Paillier算法按正整數(shù)的形式進(jìn)行加密,加密后每個(gè)節(jié)點(diǎn)的長(zhǎng)度是不固定。所述步驟C具體為:為方便計(jì)算,數(shù)字組加密后,在組之間設(shè)置分隔符;由標(biāo)志位、組的加密串和分隔符組成的字符串存儲(chǔ)在云關(guān)系數(shù)據(jù)庫(kù)中。所述步驟b具體為:1)初始化二棵只有根結(jié)點(diǎn)的雙鏈表二叉樹(shù),正數(shù)的和樹(shù)AST根結(jié)點(diǎn)值為193,負(fù)數(shù)的和樹(shù)MST根節(jié)點(diǎn)值為62;2)依次讀取浮點(diǎn)屬性的屬性值,若所有屬性值已讀完,則進(jìn)入步驟6),否則進(jìn)入步驟3);3)按編碼串的遍歷方式恢復(fù)雙鏈表二叉樹(shù)T:標(biāo)志位F為根結(jié)點(diǎn);若標(biāo)志位大于62則F-192為左子樹(shù)節(jié)點(diǎn)數(shù),否則62-F為左子樹(shù)節(jié)點(diǎn)數(shù),編碼順序?yàn)樽罅藰?shù)的反向鏈表;剩余數(shù)字串為右子樹(shù),編碼順序?yàn)檎蜴湵?;恢?fù)左子樹(shù)的正向鏈表和右子樹(shù)的反向鏈表;4)由標(biāo)志位判斷為正數(shù),則4.1)若AST根節(jié)點(diǎn)值大于T根節(jié)點(diǎn)值,則AST根節(jié)點(diǎn)值改為T(mén)根節(jié)點(diǎn)值,否則進(jìn)入步驟4.2);4.2)正向遍歷AST和T的右子樹(shù),若AST和T的節(jié)點(diǎn)都不為空則進(jìn)入步驟4.2.1),否則進(jìn)入步驟4.2.3):4.2.1)AST和T相同層的節(jié)點(diǎn)值相加,和為AST當(dāng)前節(jié)點(diǎn)的值;4.2.2)訪問(wèn)AST和T的下一個(gè)節(jié)點(diǎn),進(jìn)入步驟4.2);4.2.3)若T的節(jié)點(diǎn)為空,則進(jìn)入步驟4.3),否則進(jìn)入步驟4.2.4);4.2.4)新建AST的葉子節(jié)點(diǎn),將T當(dāng)前節(jié)點(diǎn)值復(fù)制到AST的葉子節(jié)點(diǎn);4.2.5)訪問(wèn)T的下一個(gè)節(jié)點(diǎn),進(jìn)入步驟4.2.3);4.3)正向遍歷AST和T的左子樹(shù),若AST和T的節(jié)點(diǎn)都不為空則進(jìn)入步驟4.3.1),否則進(jìn)入步驟4.3.3):4.3.1)AST和T相同層的節(jié)點(diǎn)值相加,和為AST當(dāng)前節(jié)點(diǎn)的值;4.3.2)訪問(wèn)AST和T的下一個(gè)節(jié)點(diǎn),進(jìn)入步驟4.3);4.3.3)若T的節(jié)點(diǎn)為空,則進(jìn)入步驟2),否則進(jìn)入步驟4.3.4);4.3.4)新建AST的葉子節(jié)點(diǎn),將T當(dāng)前節(jié)點(diǎn)值復(fù)制到AST的葉子節(jié)點(diǎn);4.3.5)訪問(wèn)T的下一個(gè)節(jié)點(diǎn),進(jìn)入步驟4.3.3);5)由標(biāo)志位判斷為負(fù)數(shù),則5.1)若MST根節(jié)點(diǎn)值小于T根節(jié)點(diǎn)值,則MST根節(jié)點(diǎn)值改為T(mén)根節(jié)點(diǎn)值,否則進(jìn)入步驟5.2);5.2)正向遍歷AST和T的右子樹(shù),若MST和T的節(jié)點(diǎn)都不為空則進(jìn)入步驟5.2.1),否則進(jìn)入步驟5.2.3);5.2.1)MST和T相同層的節(jié)點(diǎn)值相加,和為MST當(dāng)前節(jié)點(diǎn)的值;5.2.2)訪問(wèn)MST和T的下一個(gè)節(jié)點(diǎn),進(jìn)入步驟5.2);5.2.3)若T的節(jié)點(diǎn)為空,則進(jìn)入步驟5.3),否則進(jìn)入步驟5.2.4);5.2.4)新建MST的葉子節(jié)點(diǎn),將T當(dāng)前節(jié)點(diǎn)值復(fù)制到MST的葉子節(jié)點(diǎn);5.2.5)訪問(wèn)T的下一個(gè)節(jié)點(diǎn),進(jìn)入步驟5.2.3);5.3)正向遍歷MST和T的左子樹(shù),若MST和T的節(jié)點(diǎn)都不為空則進(jìn)入步驟5.3.1),否則進(jìn)入步驟4.3.3);5.3.1)MST和T相同層的節(jié)點(diǎn)值相加,和為MST當(dāng)前節(jié)點(diǎn)的值;5.3.2)訪問(wèn)MST和T的下一個(gè)節(jié)點(diǎn),進(jìn)入步驟5.3);5.3.3)若T的節(jié)點(diǎn)為空,則進(jìn)入步驟2),否則進(jìn)入步驟5.3.4);5.3.4)新建MST的葉子節(jié)點(diǎn),將T當(dāng)前節(jié)點(diǎn)值復(fù)制到MST的葉子節(jié)點(diǎn);5.3.5)訪問(wèn)T的下一個(gè)節(jié)點(diǎn),進(jìn)入步驟5.3.3);6)輸出二個(gè)數(shù)字串:按AST和MST的根節(jié)點(diǎn)、左子樹(shù)的反向遍歷、右子樹(shù)的正向遍歷及分隔符組成的數(shù)字串。上述算法描述中步驟4)主要按雙鏈表二叉樹(shù)求所有正數(shù)的和,步驟5)主要按雙鏈表二叉樹(shù)求所有負(fù)數(shù)的和,這二步過(guò)程是類(lèi)似的,僅在和樹(shù)的根節(jié)點(diǎn)值的處理不一樣。所述步驟c具體為:對(duì)正數(shù)和AST或負(fù)數(shù)和MST的數(shù)字串,除標(biāo)志位外,對(duì)分隔符間隔開(kāi)的每個(gè)數(shù)字串用Paillier算法進(jìn)行解密;恢復(fù)AST或MST的雙鏈表二叉樹(shù)T:標(biāo)志位為根節(jié)點(diǎn);由標(biāo)志位確定左子樹(shù)的節(jié)點(diǎn)數(shù),按節(jié)點(diǎn)數(shù)將分隔符間隔的數(shù)字串順序建立左子樹(shù)的反向鏈表;剩余的數(shù)字串按順序建立右子樹(shù)的正向鏈表;恢復(fù)左子樹(shù)的正向鏈表和右子樹(shù)的反向鏈表。所述步驟d具體為:(1)初始化進(jìn)位變量C為0;(2)若樹(shù)T的右子樹(shù)反向鏈表當(dāng)前節(jié)點(diǎn)為空節(jié)點(diǎn)則重復(fù)步驟(2),否則轉(zhuǎn)步驟(2.1):(2.1)將當(dāng)前節(jié)點(diǎn)值保存在變量N,修改當(dāng)前節(jié)點(diǎn)值為(N+C)mod100,修改進(jìn)位變量C=(N+C)/100;(2.2)繼續(xù)訪問(wèn)T右子樹(shù)反向鏈表的下一個(gè)節(jié)點(diǎn),重復(fù)步驟(2);(3)若樹(shù)T的左子樹(shù)正向鏈表當(dāng)前節(jié)點(diǎn)為空節(jié)點(diǎn)則進(jìn)入步驟(4),否則進(jìn)入步驟(3.1):(3.1)將當(dāng)前節(jié)點(diǎn)值保存在變量N,修改當(dāng)前節(jié)點(diǎn)值為(N+C)mod100,修改進(jìn)位變量C=(N+C)/100;(3.2)繼續(xù)訪問(wèn)T右子樹(shù)反向鏈表的下一個(gè)節(jié)點(diǎn),進(jìn)入步驟(2);(4)若進(jìn)位變量C為0則進(jìn)入步驟(5),否則進(jìn)入步驟(4.1):(4.1)設(shè)當(dāng)前節(jié)點(diǎn)為P,新建節(jié)點(diǎn)Q,Cmod100為新建節(jié)點(diǎn)Q的值,修改進(jìn)位變量C=C/100,樹(shù)T的左子樹(shù)反向鏈表根節(jié)點(diǎn)指向Q,Q指向P;正向鏈表P指向Q,Q指向空指針;(4.2)進(jìn)入步驟(4)繼續(xù)判斷是否需要新增節(jié)點(diǎn)。步驟e中,所述編碼運(yùn)算規(guī)則具體為:首先對(duì)齊小數(shù)點(diǎn),即找到整數(shù)部分的最后一個(gè)數(shù)字組,然后由最后一個(gè)數(shù)字組向前按組進(jìn)行求和,小數(shù)部分由小數(shù)的第一個(gè)數(shù)字組向后按組進(jìn)行求和,有進(jìn)位時(shí)需處理進(jìn)位。所述編碼運(yùn)算規(guī)則即浮點(diǎn)數(shù)編碼的加減運(yùn)算規(guī)則,浮點(diǎn)數(shù)按編碼規(guī)則編碼后加減運(yùn)算與十進(jìn)制小數(shù)的加減運(yùn)算過(guò)程一樣,首先對(duì)齊小數(shù)點(diǎn),即找到整數(shù)部分的最后一個(gè)數(shù)字組,由最后一個(gè)數(shù)字組向前按組進(jìn)行求和,小數(shù)部分由小數(shù)的第一個(gè)數(shù)字組向后按組進(jìn)行求和,有進(jìn)位時(shí)需處理進(jìn)位。下面是浮點(diǎn)數(shù)編碼后按組進(jìn)行的加減運(yùn)算規(guī)則。(1)正數(shù)+正數(shù)“正數(shù)+正數(shù)”的結(jié)果必然是正數(shù),可能產(chǎn)生進(jìn)位。例如a、b分別表示兩個(gè)正浮點(diǎn)數(shù)編碼對(duì)應(yīng)的數(shù)字組,a和b是二位數(shù)的整數(shù),真值和編碼值如表1所示。表1“正數(shù)+正數(shù)”情況下的真值和編碼值真值編碼值正數(shù)aa正數(shù)bb1)若(a+b)≥100,則說(shuō)明該數(shù)字組需向前一個(gè)數(shù)字組進(jìn)位,本數(shù)字組和的編碼為(a+b)-100。前一個(gè)數(shù)字組的和應(yīng)加上進(jìn)位1。若最高數(shù)字組產(chǎn)生了進(jìn)位,則產(chǎn)生一個(gè)新的數(shù)字組,編碼值為1,標(biāo)志位則需加1。2)若(a+b)<100,則說(shuō)明該數(shù)字組的和小于100,不產(chǎn)生向前一個(gè)數(shù)字組的進(jìn)位,本數(shù)字組和的編碼值為(a+b)。(2)負(fù)數(shù)+負(fù)數(shù)“負(fù)數(shù)+負(fù)數(shù)”的結(jié)果必然是負(fù)數(shù),可能產(chǎn)生進(jìn)位。例如a、b分別表示兩個(gè)負(fù)浮點(diǎn)數(shù)編碼后的對(duì)應(yīng)數(shù)字組,a和b是二位數(shù)的整數(shù)。真值和編碼值如表2所示。表2“負(fù)數(shù)+負(fù)數(shù)”情況下的真值和編碼值真值編碼值負(fù)數(shù)a100-a負(fù)數(shù)b100-b1)若(100-a)+(100-b)>100,則說(shuō)明該數(shù)字組真值的和小于100,該位沒(méi)有向高一位產(chǎn)生進(jìn)位。本數(shù)字組和的編碼值為(100-a)+(100-b)-100。2)若(100-a)+(100-b)≤100,則說(shuō)明該數(shù)字組真值的和大于100,向前一個(gè)數(shù)字組產(chǎn)生進(jìn)位。本數(shù)字值和的編碼值為(100-a)+(100-b),前一個(gè)數(shù)字組相加的和再加99處理進(jìn)位。若最高數(shù)字組產(chǎn)生了進(jìn)位,則產(chǎn)生一個(gè)新的數(shù)字位,編碼值為99,即真值為1,同時(shí)標(biāo)志位減1。(3)正數(shù)+負(fù)數(shù)“正數(shù)+負(fù)數(shù)”的結(jié)果有三種情況,正數(shù),負(fù)數(shù)或者0,不可能產(chǎn)生進(jìn)位,但可能產(chǎn)生借位。例如a、b分別表示正、負(fù)浮點(diǎn)數(shù)編碼對(duì)應(yīng)的數(shù)字組,a和b是二位數(shù)的整數(shù),則標(biāo)志位、真值和編碼值如表3所示。表3“正數(shù)+負(fù)數(shù)”情況下的標(biāo)志位值、真值和編碼值標(biāo)志位值真值編碼值正數(shù)f1aa負(fù)數(shù)f2b100-b本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點(diǎn)和有益效果:1、本發(fā)明解決了云關(guān)系數(shù)據(jù)庫(kù)浮點(diǎn)型的加密及加密數(shù)據(jù)上的求和計(jì)算能力,為云數(shù)據(jù)庫(kù)的浮點(diǎn)型數(shù)據(jù)的安全性和高效查詢提供了技術(shù)解決方法。2、與采用將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)的方法比較,本發(fā)明采用的浮點(diǎn)數(shù)編碼和運(yùn)算規(guī)則即保持了浮點(diǎn)型數(shù)據(jù)加密后的計(jì)算能力,又保持了計(jì)算的準(zhǔn)確性和精度。與其他加密數(shù)據(jù)庫(kù)不支持浮點(diǎn)型相比,本發(fā)明采用的編碼和數(shù)據(jù)結(jié)構(gòu)支持關(guān)系型數(shù)據(jù)庫(kù)中浮點(diǎn)型數(shù)據(jù)的加密存儲(chǔ)和求和函數(shù)SUM。3、本發(fā)明適用于中小企業(yè)在云計(jì)算環(huán)境中存貯敏感數(shù)據(jù),也適用于云服務(wù)商提供加密數(shù)據(jù)的服務(wù)。在云計(jì)算廣闊前景下,本發(fā)明的產(chǎn)業(yè)化前景是非常好的。4、本發(fā)明的浮點(diǎn)數(shù)的編碼和運(yùn)算規(guī)則:將浮點(diǎn)數(shù)進(jìn)行劃分、符號(hào)表示、小數(shù)點(diǎn)位置及編碼四個(gè)方面進(jìn)行了定義,該定義隱藏了符號(hào)位和小數(shù)點(diǎn)位置;并給出了編碼后浮點(diǎn)數(shù)的運(yùn)算規(guī)則,使浮點(diǎn)屬性值加密后能保持查詢計(jì)算能力。數(shù)據(jù)庫(kù)Oracle為提高計(jì)算的精度,也對(duì)浮點(diǎn)型采用了編碼形式,同樣隱藏了符號(hào)位和小數(shù)點(diǎn)位置,但Oracle公司僅提供了浮點(diǎn)格式的查詢,未公布編碼定義,也未給出編碼運(yùn)算規(guī)則。5、本發(fā)明的浮點(diǎn)數(shù)的“雙鏈表二叉樹(shù)”結(jié)構(gòu):為保持浮點(diǎn)屬性的查詢計(jì)算能力,本發(fā)明對(duì)浮點(diǎn)數(shù)的編碼采用了“雙鏈表二叉樹(shù)”的數(shù)據(jù)結(jié)構(gòu),樹(shù)的正向遍歷和反向遍歷為求和函數(shù)SUM提供了可操作性。6、本發(fā)明的求和算法:求和函數(shù)SUM算法通過(guò)三個(gè)過(guò)程完成。首先在云數(shù)據(jù)庫(kù)上直接對(duì)加密后的屬性值按正數(shù)和負(fù)數(shù)分類(lèi)求和,未對(duì)屬性值解密,保證了數(shù)據(jù)的安全性;其次由用戶信任的數(shù)據(jù)庫(kù)代理對(duì)云數(shù)據(jù)庫(kù)上求和的結(jié)果進(jìn)行解密和校正;最后為保證浮點(diǎn)計(jì)算精度,對(duì)解密后正數(shù)的和與負(fù)數(shù)的和采用浮點(diǎn)編碼計(jì)算,解碼后得到最終結(jié)果。附圖說(shuō)明圖1為本發(fā)明所述一種云關(guān)系數(shù)據(jù)庫(kù)的浮點(diǎn)數(shù)據(jù)的加密及查詢方法的流程圖。圖2為浮點(diǎn)數(shù)加密和SUM查詢的體系結(jié)構(gòu)的示意圖。圖3為云數(shù)據(jù)庫(kù)UDF求浮點(diǎn)屬性所有正數(shù)的和及所有負(fù)數(shù)的和的算法流程圖。圖4為數(shù)據(jù)庫(kù)代理上的解密及校正算法流程圖。圖5-1、5-2為求浮點(diǎn)屬性所有正數(shù)的和與所有負(fù)數(shù)的和的編碼的流程圖。具體實(shí)施方式下面結(jié)合實(shí)施例及附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式不限于此。如圖1,一種云關(guān)系數(shù)據(jù)庫(kù)的浮點(diǎn)數(shù)據(jù)的加密及查詢方法,包含以下步驟:將浮點(diǎn)數(shù)據(jù)的密文插入到云數(shù)據(jù)庫(kù):A、用戶輸入包含浮點(diǎn)數(shù)據(jù)的插入語(yǔ)句,對(duì)浮點(diǎn)數(shù)進(jìn)行編碼,通過(guò)編碼規(guī)則將浮點(diǎn)數(shù)的小數(shù)點(diǎn)位置和正負(fù)號(hào)隱藏起來(lái);B、利用同態(tài)加密算法Paillier對(duì)編碼后的每一組分別進(jìn)行加密;C、將加密后的編碼值存入云數(shù)據(jù)庫(kù);對(duì)用戶對(duì)浮點(diǎn)數(shù)的SUM查詢:通過(guò)對(duì)存貯在云數(shù)據(jù)庫(kù)的浮點(diǎn)數(shù)不解密的情況下進(jìn)行SUM求和,具體步驟為:a、將存貯在云數(shù)據(jù)庫(kù)的浮點(diǎn)數(shù)密文轉(zhuǎn)換為雙鏈表二叉樹(shù);b、利用雙鏈表二叉樹(shù)分別對(duì)正浮點(diǎn)數(shù)、負(fù)浮點(diǎn)數(shù)求和得到X、Y,分開(kāi)求和的原因是受到同態(tài)加密算法Paillier的限制和省去對(duì)借位的處理;c、將云數(shù)據(jù)庫(kù)所求得的X、Y的密文傳送到用戶客戶端,再利用同態(tài)加密算法Paillier對(duì)X、Y進(jìn)行解密;d、解密后的二個(gè)和不符合我們的編碼規(guī)則,采用雙鏈表二叉樹(shù)的結(jié)構(gòu)對(duì)X、Y進(jìn)行校正,使X、Y符合編碼規(guī)則;e、對(duì)校正后的X、Y按編碼運(yùn)算規(guī)則進(jìn)行一次正、負(fù)數(shù)的求和運(yùn)算,得到浮點(diǎn)數(shù)的SUM函數(shù)最終結(jié)果的編碼值;f、將SUM函數(shù)編碼值按編碼規(guī)則進(jìn)行解碼即為用戶查詢的結(jié)果。浮點(diǎn)數(shù)的加密和SUM查詢實(shí)施過(guò)程的體系結(jié)構(gòu)如圖2所示。體系結(jié)構(gòu)包括三個(gè)組成部分:用戶、數(shù)據(jù)庫(kù)代理和云數(shù)據(jù)庫(kù)。用戶是整個(gè)系統(tǒng)的使用者;數(shù)據(jù)庫(kù)代理主要完成對(duì)插入到云數(shù)據(jù)庫(kù)中的浮點(diǎn)數(shù)進(jìn)行編碼、加密;對(duì)用戶的SUM查詢結(jié)果進(jìn)行解密、校正、計(jì)算最終結(jié)果等過(guò)程。云數(shù)據(jù)庫(kù)端的用戶自定義函數(shù)UDF(UserDefineFunction)主要完成將浮點(diǎn)數(shù)密文轉(zhuǎn)換為雙鏈表二叉樹(shù)及正、負(fù)浮點(diǎn)數(shù)密文的求和。1、對(duì)浮點(diǎn)數(shù)編碼本發(fā)明將浮點(diǎn)數(shù)的編碼分為標(biāo)志位和數(shù)字組二部分:標(biāo)志位/指數(shù)位F,[數(shù)字組1,數(shù)字組2,……,數(shù)字組N,……,數(shù)字組20](1)劃分:按照浮點(diǎn)數(shù)的十進(jìn)制小數(shù)形式以小數(shù)點(diǎn)為界,整數(shù)部分從小數(shù)點(diǎn)位置開(kāi)始向最高位方向每二位為一組,最高位不夠二位的補(bǔ)0;小數(shù)部分從小數(shù)點(diǎn)位置開(kāi)始向最低位方向每二位為一組,最低位不夠二位的補(bǔ)0。數(shù)字組的順序與浮點(diǎn)數(shù)十進(jìn)制數(shù)字順序一致。(2)符號(hào)位表示:設(shè)浮點(diǎn)數(shù)編碼的標(biāo)志位為F,標(biāo)志位F大于193的為正數(shù),標(biāo)志位F小于62的為負(fù)數(shù),標(biāo)志位F為193或62時(shí)分別表示正零或負(fù)零。(3)小數(shù)點(diǎn)位置:設(shè)浮點(diǎn)數(shù)編碼的標(biāo)志位為F,F(xiàn)-193+1為正數(shù)的整數(shù)部分的組數(shù),62-F+1為負(fù)數(shù)的整數(shù)部分的組數(shù),除掉整數(shù)部分的組數(shù)后剩余的組數(shù)為小數(shù)部分。(4)數(shù)字組的編碼:設(shè)劃分的每一組的數(shù)字值為N,正數(shù)的編碼為N,負(fù)數(shù)的編碼為100-N。例:正數(shù)123.1201,按編碼規(guī)則為19401231201;負(fù)數(shù)-123.1201,按編碼規(guī)則為06199778899;為了計(jì)算的方便,本發(fā)明編碼劃分時(shí)每二位進(jìn)行分組。按這種編碼表示的浮點(diǎn)數(shù)精度可以達(dá)到38位,長(zhǎng)度為0-22字節(jié),取值范圍為10E-130—10E126。2、對(duì)浮點(diǎn)數(shù)加密存儲(chǔ)編碼后的浮點(diǎn)數(shù)隱藏了符號(hào)位、小數(shù)點(diǎn)位置,并將減法轉(zhuǎn)換成了加法。但浮點(diǎn)數(shù)加密之后,求和計(jì)算過(guò)程需要對(duì)加密后的數(shù)據(jù)比較大小,如判斷是否有進(jìn)位產(chǎn)生,即加密算法需具有保序性;但目前沒(méi)有能同時(shí)滿足保序和加法同態(tài)的加密算法。同態(tài)加密算法Paillier是具有良好同態(tài)性質(zhì)的概率加密體制,在安全多方計(jì)算和密文數(shù)據(jù)庫(kù)檢索方面有廣泛的應(yīng)用。但同態(tài)加密算法Paillier不支持負(fù)數(shù)的加密,不支持減法同態(tài),不支持保序。本發(fā)明的目的是要提供數(shù)據(jù)庫(kù)的浮點(diǎn)數(shù)加密求和的查詢能力,因此上述編碼規(guī)則中將負(fù)數(shù)的編碼也直接采用了真值,即在云數(shù)據(jù)庫(kù)上不執(zhí)行減法計(jì)算。數(shù)據(jù)庫(kù)代理對(duì)浮點(diǎn)數(shù)編碼形式標(biāo)志位/指數(shù)位F,[數(shù)字組1,數(shù)字組2,……,數(shù)字組N,……,數(shù)字組20]的加密過(guò)程分為三步:1)由于標(biāo)志位隱藏著浮點(diǎn)數(shù)符號(hào)和小數(shù)點(diǎn)位置信息,標(biāo)志位F不進(jìn)行加密。2)按數(shù)字組順序每個(gè)數(shù)字組N用Paillier算法按正整數(shù)的形式進(jìn)行加密,加密后每個(gè)節(jié)點(diǎn)的長(zhǎng)度是不固定的。3)為方便計(jì)算,數(shù)字組加密后,在組之間設(shè)置分隔符。由標(biāo)志位、組的加密串和分隔符組成的字符串存儲(chǔ)在云關(guān)系數(shù)據(jù)庫(kù)中。3、利用云數(shù)據(jù)庫(kù)上的UDF函數(shù)完成浮點(diǎn)數(shù)密文的求和計(jì)算對(duì)存貯在云服務(wù)器上浮點(diǎn)型編碼的加密值求出所有正數(shù)加密的和和所有負(fù)數(shù)加密的和;算法流程圖如附圖3所示,算法描述如下。輸入:云服務(wù)器上加密的浮點(diǎn)屬性值;輸出:二個(gè)加密數(shù)字串,其中一個(gè)為所有正數(shù)的和的編碼加密串,另一個(gè)為所有負(fù)數(shù)的和的編碼加密串;開(kāi)始:初始化二棵只有根結(jié)點(diǎn)的雙鏈表二叉樹(shù),正數(shù)的和樹(shù)AST根結(jié)點(diǎn)值為193,負(fù)數(shù)的和樹(shù)MST根節(jié)點(diǎn)值為62;依次讀取浮點(diǎn)屬性的屬性值,若所有屬性值已讀完,則轉(zhuǎn)6),否則轉(zhuǎn)步驟3);按編碼串的遍歷方式恢復(fù)雙鏈表二叉樹(shù)T:標(biāo)志位F為根結(jié)點(diǎn);若標(biāo)志位大于62則F-192為左子樹(shù)節(jié)點(diǎn)數(shù),否則62-F為左子樹(shù)節(jié)點(diǎn)數(shù),編碼順序?yàn)樽罅藰?shù)的反向鏈表;剩余數(shù)字串為右子樹(shù),編碼順序?yàn)檎蜴湵恚换謴?fù)左子樹(shù)的正向鏈表和右子樹(shù)的反向鏈表;由標(biāo)志位判斷為正數(shù),則4.1)若AST根節(jié)點(diǎn)值大于T根節(jié)點(diǎn)值,則AST根節(jié)點(diǎn)值改為T(mén)根節(jié)點(diǎn)值,否則執(zhí)行4.2);4.2)正向遍歷AST和T的右子樹(shù),若AST和T的節(jié)點(diǎn)都不為空則轉(zhuǎn)4.2.1),否則轉(zhuǎn)4.2.3);4.2.1)AST和T相同層的節(jié)點(diǎn)值相加,和為AST當(dāng)前節(jié)點(diǎn)的值;4.2.2)訪問(wèn)AST和T的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)4.2);4.2.3)若T的節(jié)點(diǎn)為空,則轉(zhuǎn)4.3),否則轉(zhuǎn)4.2.4);4.2.4)新建AST的葉子節(jié)點(diǎn),將T當(dāng)前節(jié)點(diǎn)值復(fù)制到AST的葉子節(jié)點(diǎn);4.2.5)訪問(wèn)T的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)4.2.3);4.3)正向遍歷AST和T的左子樹(shù),若AST和T的節(jié)點(diǎn)都不為空則轉(zhuǎn)4.3.1),否則轉(zhuǎn)4.3.3);4.3.1)AST和T相同層的節(jié)點(diǎn)值相加,和為AST當(dāng)前節(jié)點(diǎn)的值;4.3.2)訪問(wèn)AST和T的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)4.3);4.3.3)若T的節(jié)點(diǎn)為空,則轉(zhuǎn)步驟2),否則轉(zhuǎn)4.3.4);4.3.4)新建AST的葉子節(jié)點(diǎn),將T當(dāng)前節(jié)點(diǎn)值復(fù)制到AST的葉子節(jié)點(diǎn);4.3.5)訪問(wèn)T的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)4.3.3);由標(biāo)志位判斷為負(fù)數(shù),則5.1)若MST根節(jié)點(diǎn)值小于T根節(jié)點(diǎn)值,則MST根節(jié)點(diǎn)值改為T(mén)根節(jié)點(diǎn)值,否則執(zhí)行5.2);5.2)正向遍歷AST和T的右子樹(shù),若MST和T的節(jié)點(diǎn)都不為空則轉(zhuǎn)5.2.1),否則轉(zhuǎn)5.2.3);5.2.1)MST和T相同層的節(jié)點(diǎn)值相加,和為MST當(dāng)前節(jié)點(diǎn)的值;5.2.2)訪問(wèn)MST和T的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)5.2);5.2.3)若T的節(jié)點(diǎn)為空,則轉(zhuǎn)5.3),否則轉(zhuǎn)5.2.4);5.2.4)新建MST的葉子節(jié)點(diǎn),將T當(dāng)前節(jié)點(diǎn)值復(fù)制到MST的葉子節(jié)點(diǎn);5.2.5)訪問(wèn)T的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)5.2.3);5.3)正向遍歷MST和T的左子樹(shù),若MST和T的節(jié)點(diǎn)都不為空則轉(zhuǎn)5.3.1),否則轉(zhuǎn)4.3.3);5.3.1)MST和T相同層的節(jié)點(diǎn)值相加,和為MST當(dāng)前節(jié)點(diǎn)的值;5.3.2)訪問(wèn)MST和T的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)5.3);5.3.3)若T的節(jié)點(diǎn)為空,則轉(zhuǎn)2),否則轉(zhuǎn)5.3.4);5.3.4)新建MST的葉子節(jié)點(diǎn),將T當(dāng)前節(jié)點(diǎn)值復(fù)制到MST的葉子節(jié)點(diǎn);5.3.5)訪問(wèn)T的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)5.3.3);6)輸出二個(gè)數(shù)字串:按AST和MST的根節(jié)點(diǎn)、左子樹(shù)的反向遍歷、右子樹(shù)的正向遍歷及分隔符組成的數(shù)字串;上述算法描述中第4)步主要按雙鏈表二叉樹(shù)求所有正數(shù)的和,第5)步主要按雙鏈表二叉樹(shù)求所有負(fù)數(shù)的和,這二步過(guò)程是類(lèi)似的,僅在和樹(shù)的根節(jié)點(diǎn)值的處理不一樣。4、數(shù)據(jù)庫(kù)代理對(duì)云數(shù)據(jù)庫(kù)UDF的求和值進(jìn)行解密及校正將云服務(wù)器上計(jì)算輸出的AST和MST的數(shù)字串傳輸?shù)綌?shù)據(jù)庫(kù)代理,利用Paillier算法對(duì)編碼中的每個(gè)數(shù)字組進(jìn)行解密,解密后進(jìn)行校正。解密及校正算法流程圖如附圖4所示,算法描述如下。輸入:云數(shù)據(jù)庫(kù)中計(jì)算輸出的正數(shù)和AST或負(fù)數(shù)和MST的數(shù)字串;輸出:正數(shù)和AST或負(fù)數(shù)和MST解密校正后的雙鏈表二叉樹(shù);開(kāi)始:1)對(duì)正數(shù)和AST或負(fù)數(shù)和MST的數(shù)字串除標(biāo)志位外,對(duì)分隔符間隔開(kāi)的每個(gè)數(shù)字串用Paillier算法進(jìn)行解密;2)恢復(fù)AST或MST的雙鏈表二叉樹(shù)T:標(biāo)志位為根節(jié)點(diǎn);由標(biāo)志位確定左子樹(shù)的節(jié)點(diǎn)數(shù),按節(jié)點(diǎn)數(shù)將分隔符間隔的數(shù)字串順序建立左子樹(shù)的反向鏈表;剩余的數(shù)字串按順序建立右子樹(shù)的正向鏈表;恢復(fù)左子樹(shù)的正向鏈表和右子樹(shù)的反向鏈表;3)初始化進(jìn)位變量C為0;4)若樹(shù)T的右子樹(shù)反向鏈表當(dāng)前節(jié)點(diǎn)為空節(jié)點(diǎn)則轉(zhuǎn)4),否則轉(zhuǎn)4.1);4.1)將當(dāng)前節(jié)點(diǎn)值保存在變量N,修改當(dāng)前節(jié)點(diǎn)值為(N+C)mod100,修改進(jìn)位變量C=(N+C)/100;4.2)繼續(xù)訪問(wèn)T右子樹(shù)反向鏈表的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)4);5)若樹(shù)T的左子樹(shù)正向鏈表當(dāng)前節(jié)點(diǎn)為空節(jié)點(diǎn)則轉(zhuǎn)6),否則轉(zhuǎn)5.1);5.1)將當(dāng)前節(jié)點(diǎn)值保存在變量N,修改當(dāng)前節(jié)點(diǎn)值為(N+C)mod100,修改進(jìn)位變量C=(N+C)/100;5.2)繼續(xù)訪問(wèn)T右子樹(shù)反向鏈表的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)4);6)若進(jìn)位變量C為0則轉(zhuǎn)7),否則轉(zhuǎn)6.1);6.1)設(shè)當(dāng)前節(jié)點(diǎn)為P,新建節(jié)點(diǎn)Q,Cmod100為新建節(jié)點(diǎn)Q的值,修改進(jìn)位變量C=C/100,樹(shù)T的左子樹(shù)反向鏈表根節(jié)點(diǎn)指向Q,Q指向P;正向鏈表P指向Q,Q指向空指針;6.2)轉(zhuǎn)6)繼續(xù)判斷是否需要新增節(jié)點(diǎn);7)輸出解密校正后的AST或MST的雙鏈表二叉樹(shù);上述算法步驟4)到6)主要對(duì)數(shù)字組的總和大于99的值進(jìn)行校正。5、輸出用戶SUM查詢的最終結(jié)果對(duì)浮點(diǎn)屬性所有正數(shù)的和與所有負(fù)數(shù)的和再次進(jìn)行求和,結(jié)果即為浮點(diǎn)屬性求和函數(shù)SUM的值。首先對(duì)MST的雙鏈表二叉樹(shù)按編碼規(guī)則修改每個(gè)節(jié)點(diǎn)值,然后按AST和MST的雙鏈表二叉樹(shù)進(jìn)行求和,解碼校正后輸出求和函數(shù)SUM的值。這一步?jīng)]有對(duì)正數(shù)和或者負(fù)數(shù)和解碼后直接相加是為了保證浮點(diǎn)型計(jì)算的精度。算法流程如附圖5-1、5-2所示,算法描述如下。輸入:數(shù)據(jù)庫(kù)代理解密校正后的雙鏈表二叉樹(shù)AST和雙鏈表二叉樹(shù)MST;輸出:浮點(diǎn)屬性的求和函數(shù)SUM的輸出值(編碼形式);開(kāi)始:1)遍歷雙鏈表二叉樹(shù)MST,將每個(gè)節(jié)點(diǎn)的值N按負(fù)數(shù)的編碼規(guī)則改為編碼值100-N;2)初始化和樹(shù)ST,建立只有根節(jié)點(diǎn)的雙鏈表二叉樹(shù),根節(jié)點(diǎn)初始值為0;3)對(duì)AST,MST右子樹(shù)正向遍歷,若AST和MST中短的右子樹(shù)節(jié)點(diǎn)為空節(jié)點(diǎn)則轉(zhuǎn)4),否則轉(zhuǎn)3.1);3.1)設(shè)ST當(dāng)前葉子節(jié)點(diǎn)為P,ST右子樹(shù)新建葉子節(jié)點(diǎn)Q,正向鏈表P指向Q,反向鏈表根節(jié)點(diǎn)指向Q,Q指向P。AST,MST同一層的節(jié)點(diǎn)值相加,和為Q節(jié)點(diǎn)的值;3.2)取AST,MST的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)3);4)若AST和MST中長(zhǎng)的右分支為空節(jié)點(diǎn)則轉(zhuǎn)5),否則轉(zhuǎn)4.1);4.1)設(shè)ST當(dāng)前葉子節(jié)點(diǎn)為P,ST右子樹(shù)新建葉子節(jié)點(diǎn)Q,正向鏈表P指向Q,反向鏈表根節(jié)點(diǎn)指向Q,Q指向P。將AST和MST長(zhǎng)分支中的節(jié)點(diǎn)值復(fù)制給節(jié)點(diǎn)Q;4.2)取AST或MST的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)4);5)對(duì)AST,MST左子樹(shù)正向遍歷,若AST和MST中短的左子樹(shù)節(jié)點(diǎn)為空節(jié)點(diǎn)則轉(zhuǎn)6),否則轉(zhuǎn)3.1);5.1)設(shè)ST當(dāng)前葉子節(jié)點(diǎn)為P,ST左子樹(shù)新建葉子節(jié)點(diǎn)Q,正向鏈表P指向Q,反向鏈表根節(jié)點(diǎn)指向Q,Q指向P。AST,MST同一層的節(jié)點(diǎn)值相加,和為Q節(jié)點(diǎn)的值;5.2)取AST,MST的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)5);6)若AST和MST中長(zhǎng)的左分支為空節(jié)點(diǎn)則轉(zhuǎn)7),否則轉(zhuǎn)6.1);6.1)設(shè)ST當(dāng)前葉子節(jié)點(diǎn)為P,ST右子樹(shù)新建葉子節(jié)點(diǎn)Q,正向鏈表P指向Q,反向鏈表根節(jié)點(diǎn)指向Q,Q指向P。將AST和MST長(zhǎng)分支中的節(jié)點(diǎn)值復(fù)制給節(jié)點(diǎn)Q;6.2)取AST或MST的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)6);7)初始化進(jìn)位變量C為0,判斷AST和MST根節(jié)點(diǎn)的和,若和大于255轉(zhuǎn)9),若和小于255則轉(zhuǎn)10),否則轉(zhuǎn)7.1);7.1)對(duì)和樹(shù)ST的左子樹(shù)反向遍歷,右子樹(shù)正向遍歷,找到第一個(gè)值不為100的節(jié)點(diǎn);7.2)若節(jié)點(diǎn)值大于100轉(zhuǎn)9),否則轉(zhuǎn)11);8)將和樹(shù)ST根節(jié)點(diǎn)的值修改為AST根節(jié)點(diǎn)的值;9)對(duì)ST的右子樹(shù)反向遍歷,若是空節(jié)點(diǎn)轉(zhuǎn)10),否則轉(zhuǎn)9.1);9.1)將ST當(dāng)前節(jié)點(diǎn)值保存為N,若N+C≥100則將ST當(dāng)前節(jié)點(diǎn)值改為(N+C)-100,進(jìn)位變量C修改為0;否則將進(jìn)位變量C修改為99;9.2)取ST的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)9);10)對(duì)ST的左子樹(shù)正向遍歷,若是空節(jié)點(diǎn)轉(zhuǎn)14),否則轉(zhuǎn)10.1);10.1)將ST當(dāng)前節(jié)點(diǎn)值保存為N,若N+C≥100則將ST當(dāng)前節(jié)點(diǎn)值改為(N+C)-100,進(jìn)位變量C修改為0;否則將進(jìn)位變量C修改為99;10.2)取ST的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)10);11)將和樹(shù)ST根節(jié)點(diǎn)的值修改為MST根節(jié)點(diǎn)的值;12)對(duì)ST的右子樹(shù)反向遍歷,若是空節(jié)點(diǎn)轉(zhuǎn)13),否則轉(zhuǎn)12.1);12.1)將ST當(dāng)前節(jié)點(diǎn)值保存為N,若N+C≥100則將ST當(dāng)前節(jié)點(diǎn)值改為(N+C)-100,進(jìn)位變量C修改為99;否則將進(jìn)位變量C修改為0;12.2)取ST的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)12);13)對(duì)ST的左子樹(shù)正向遍歷,若是空節(jié)點(diǎn)轉(zhuǎn)14),否則轉(zhuǎn)10.1);13.1)將ST當(dāng)前節(jié)點(diǎn)值保存為N,若N+C≥100則將ST當(dāng)前節(jié)點(diǎn)值改為(N+C)-100,進(jìn)位變量C修改為99;否則將進(jìn)位變量C修改為0;13.2)取ST的下一個(gè)節(jié)點(diǎn),轉(zhuǎn)13);14)輸出和樹(shù)ST按根節(jié)點(diǎn)、左子樹(shù)反向遍歷、右子樹(shù)正向遍歷得到求和函數(shù)SUM的輸出,其值為編碼形式;上述算法描述從第3)到6)求出了AST和MST對(duì)應(yīng)節(jié)點(diǎn)的和,存到和樹(shù)ST;若求和函數(shù)SUM的和是正數(shù),則按步驟9)和10)校正;若求和函數(shù)SUM的和是負(fù)數(shù),則按步驟12)和13)校正。上述算法得到求和函數(shù)SUM值的編碼形式后再進(jìn)行解碼。設(shè)數(shù)字組N在編碼中的順序?yàn)閗,順序編號(hào)從1開(kāi)始,則解碼式為∑N×100(F-192-K)其中F為標(biāo)志位。解碼后的結(jié)果可能在最高位和最低位出現(xiàn)多余的0,這部分無(wú)意義的0可直接去掉不影響結(jié)果。上述實(shí)施例為本發(fā)明較佳的實(shí)施方式,但本發(fā)明的實(shí)施方式并不受上述實(shí)施例的限制,其他的任何未背離本發(fā)明的精神實(shí)質(zhì)與原理下所作的改變、修飾、替代、組合、簡(jiǎn)化,均應(yīng)為等效的置換方式,都包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁(yè)1 2 3 
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
遵化市| 北辰区| 驻马店市| 华阴市| 怀仁县| 远安县| 林口县| 荣昌县| 彭州市| 大连市| 玉溪市| 马龙县| 玉田县| 藁城市| 榆树市| 抚远县| 称多县| 平南县| 大洼县| 洪湖市| 奎屯市| 栾川县| 梁河县| 庆元县| 奎屯市| 焉耆| 靖安县| 金堂县| 工布江达县| 永平县| 项城市| 梁山县| 连平县| 佛教| 都江堰市| 中宁县| 黄骅市| 漯河市| 乌鲁木齐市| 苏尼特左旗| 尼木县|