本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)加密的方法、解密的方法及裝置。
背景技術(shù):
數(shù)據(jù)傳輸、存儲(chǔ)、交換過(guò)程中的暴露,可能會(huì)導(dǎo)致數(shù)據(jù)中攜帶的重要信息和隱私信息被意外公開(kāi),因此需要對(duì)數(shù)據(jù)進(jìn)行加密,以保證信息和數(shù)據(jù)能夠安全的存儲(chǔ)、傳輸或交換。
數(shù)據(jù)加密,是一門歷史悠久的技術(shù),指通過(guò)加密算法和加密密鑰將明文轉(zhuǎn)變?yōu)槊芪?,而解密則是通過(guò)解密算法和解密密鑰將密文恢復(fù)為明文。數(shù)據(jù)加密目前仍是計(jì)算機(jī)系統(tǒng)對(duì)信息進(jìn)行保護(hù)的一種最可靠的辦法。它利用密碼技術(shù)對(duì)信息進(jìn)行加密,實(shí)現(xiàn)信息隱蔽,從而起到保護(hù)信息的安全的作用。
傳統(tǒng)的數(shù)據(jù)加密流程如圖1所示。
著名的對(duì)稱加密算法可分為兩大類:
第一類是分組加密算法,該類算法的基本思想是將明文以64比特(或其它固定長(zhǎng)度)分為一組,在密鑰的作用下,通過(guò)多輪置換和迭代,輸出64比特的密文。分組加密算法可視為大字符集上的置換加密算法。著名的分組加密算法有數(shù)據(jù)加密標(biāo)準(zhǔn)(DES)等。
第二類是序列密碼算法,其核心思想是設(shè)計(jì)一個(gè)隨機(jī)序列產(chǎn)生器,該隨機(jī)序列產(chǎn)生器在用戶密鑰的作用下,生成隨機(jī)的密鑰流,將密鑰流與明文流作模2加法,從而形成密文流。序列密碼可以看成是多表密碼的一種,如果密碼的周期不大,它將非常類似于維吉利亞密碼。
但上述數(shù)據(jù)加密方法通常有以下弊端中的一種或幾種:
1、相同明文的數(shù)據(jù),加密后得到的密文是相同的,可以從已知部分密文推理出明文。
2、密文的長(zhǎng)度和明文的長(zhǎng)度一一對(duì)應(yīng),數(shù)據(jù)的保密性和安全性差。
3、加密后的數(shù)據(jù)膨脹嚴(yán)重。
4、可以從密文片段開(kāi)始破解,數(shù)據(jù)的保密性和安全性差。
5、算法復(fù)雜,加密效率低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的在于提供一種數(shù)據(jù)加密的方法、解密的方法及裝置,能大幅增加破解難度,進(jìn)而增加信息的保密性和安全性。
為了達(dá)到上述目的,本發(fā)明的實(shí)施例提供了一種數(shù)據(jù)加密的方法,該方法包括:
根據(jù)明文數(shù)據(jù)、密鑰和第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算,得到第一密文數(shù)據(jù);
根據(jù)密鑰和第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算,得到第二隨機(jī)數(shù)據(jù);
將第二隨機(jī)數(shù)據(jù)插入到第一密文數(shù)據(jù)中,得到第二密文數(shù)據(jù);
對(duì)第二密文數(shù)據(jù)進(jìn)行反轉(zhuǎn)比特位操作,得到最終密文數(shù)據(jù)。
其中,在根據(jù)明文數(shù)據(jù)、密鑰和第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算,得到第一密文數(shù)據(jù)之前,方法還包括:
根據(jù)明文數(shù)據(jù)的第一長(zhǎng)度值,確定出最終密文數(shù)據(jù)的第二長(zhǎng)度值,其中第二長(zhǎng)度值為大于預(yù)設(shè)數(shù)值的一個(gè)自然數(shù)的最小整數(shù)倍數(shù),且第二長(zhǎng)度值大于第一長(zhǎng)度值;
根據(jù)第二長(zhǎng)度值與第一長(zhǎng)度值的差值,得到第一隨機(jī)數(shù)據(jù)的第三長(zhǎng)度值;
根據(jù)第三長(zhǎng)度值,生成第一隨機(jī)數(shù)據(jù),其中第三長(zhǎng)度值通過(guò)第一隨機(jī)數(shù)據(jù)的第一字節(jié)中的至少一個(gè)比特位表征。
其中,將第二隨機(jī)數(shù)據(jù)插入到第一密文數(shù)據(jù)中,得到第二密文數(shù)據(jù),具體包括:
根據(jù)第二長(zhǎng)度值、密鑰的第四長(zhǎng)度值以及密鑰的校驗(yàn)和,確定出第二隨機(jī)數(shù)據(jù)在第一密文數(shù)據(jù)中的插入位置;
根據(jù)插入位置,將第二隨機(jī)數(shù)據(jù)插入到第一密文數(shù)據(jù)中,得到第二密文數(shù)據(jù)。
其中,對(duì)第二密文數(shù)據(jù)進(jìn)行反轉(zhuǎn)比特位操作,得到最終密文數(shù)據(jù),具體包 括:
根據(jù)插入位置和第四長(zhǎng)度值,確定出在第二密文數(shù)據(jù)中進(jìn)行反轉(zhuǎn)比特位操作的開(kāi)始位置;
反轉(zhuǎn)第二密文數(shù)據(jù)中位于開(kāi)始位置后的每個(gè)字節(jié)中的一個(gè)比特位,得到最終密文數(shù)據(jù),其中每個(gè)字節(jié)需要反轉(zhuǎn)的比特序號(hào)由該字節(jié)前面的字節(jié)組成的比特流中的至少三個(gè)比特位決定。
本發(fā)明的實(shí)施例還提供了一種數(shù)據(jù)加密的裝置,該裝置包括:
第一運(yùn)算模塊,用于根據(jù)明文數(shù)據(jù)、密鑰和第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算,得到第一密文數(shù)據(jù);
第二運(yùn)算模塊,用于根據(jù)密鑰和第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算,得到第二隨機(jī)數(shù)據(jù);
插入模塊,用于將第二隨機(jī)數(shù)據(jù)插入到第一密文數(shù)據(jù)中,得到第二密文數(shù)據(jù);
第一操作模塊,用于對(duì)第二密文數(shù)據(jù)進(jìn)行反轉(zhuǎn)比特位操作,得到最終密文數(shù)據(jù)。
其中,裝置還包括:
第一確定模塊,用于根據(jù)明文數(shù)據(jù)的第一長(zhǎng)度值,確定出最終密文數(shù)據(jù)的第二長(zhǎng)度值,其中第二長(zhǎng)度值為大于預(yù)設(shè)數(shù)值的一個(gè)自然數(shù)的最小整數(shù)倍數(shù),且第二長(zhǎng)度值大于第一長(zhǎng)度值;
第二確定模塊,用于根據(jù)第二長(zhǎng)度值與第一長(zhǎng)度值的差值,得到第一隨機(jī)數(shù)據(jù)的第三長(zhǎng)度值;
生成模塊,用于根據(jù)第三長(zhǎng)度值,生成第一隨機(jī)數(shù)據(jù),其中第三長(zhǎng)度值通過(guò)第一隨機(jī)數(shù)據(jù)的第一字節(jié)中的至少一個(gè)比特位表征。
本發(fā)明的實(shí)施例還提供了一種數(shù)據(jù)解密的方法,該方法包括:
接收最終密文數(shù)據(jù);
對(duì)最終密文數(shù)據(jù)進(jìn)行比特位反轉(zhuǎn)操作,得到第四密文數(shù)據(jù);
從第四密文數(shù)據(jù)中提取出第二隨機(jī)數(shù)據(jù),得到第五密文數(shù)據(jù);
根據(jù)第二隨機(jī)數(shù)據(jù)與密鑰進(jìn)行位運(yùn)算,得到第一隨機(jī)數(shù)據(jù);
根據(jù)第五密文數(shù)據(jù)、第一隨機(jī)數(shù)據(jù)和密鑰進(jìn)行位運(yùn)算,得到明文數(shù)據(jù)。
其中,在對(duì)最終密文數(shù)據(jù)進(jìn)行比特位反轉(zhuǎn)操作,得到第四密文數(shù)據(jù)之前,方法還包括:
根據(jù)最終密文數(shù)據(jù)的第二長(zhǎng)度值、密鑰的校驗(yàn)和以及密鑰的第四長(zhǎng)度值,確定出第二隨機(jī)數(shù)據(jù)在第四密文數(shù)據(jù)中的插入位置;
相應(yīng)地,對(duì)最終密文數(shù)據(jù)進(jìn)行比特位反轉(zhuǎn)操作,得到第四密文數(shù)據(jù),具體包括:
根據(jù)插入位置與第四長(zhǎng)度值,確定出在最終密文數(shù)據(jù)中進(jìn)行比特位反轉(zhuǎn)操作的開(kāi)始位置;
反轉(zhuǎn)最終密文數(shù)據(jù)中位于開(kāi)始位置后的每個(gè)字節(jié)中的一個(gè)比特位,得到第四密文數(shù)據(jù),其中每個(gè)字節(jié)需要反轉(zhuǎn)的比特序號(hào)由該字節(jié)前面的字節(jié)組成的比特流中的至少三個(gè)比特位決定。
其中,第二隨機(jī)數(shù)據(jù)的長(zhǎng)度值通過(guò)第二隨機(jī)數(shù)據(jù)的第一字節(jié)中的至少一個(gè)比特位表征,
相應(yīng)地,從第四密文數(shù)據(jù)中提取出第二隨機(jī)數(shù)據(jù),得到第五密文數(shù)據(jù),具體為:
根據(jù)插入位置和至少一個(gè)比特位,從第四密文數(shù)據(jù)中提取出第二隨機(jī)數(shù)據(jù),得到第五密文數(shù)據(jù)。
本發(fā)明的實(shí)施例還提供了一種數(shù)據(jù)解密的裝置,該裝置包括:
接收模塊,用于接收最終密文數(shù)據(jù);
第二操作模塊,用于對(duì)最終密文數(shù)據(jù)進(jìn)行比特位反轉(zhuǎn)操作,得到第四密文數(shù)據(jù);
提取模塊,用于從第四密文數(shù)據(jù)中提取出第二隨機(jī)數(shù)據(jù),得到第五密文數(shù)據(jù);
第三運(yùn)算模塊,用于根據(jù)第二隨機(jī)數(shù)據(jù)與密鑰進(jìn)行位運(yùn)算,得到第一隨機(jī)數(shù)據(jù);
第四運(yùn)算模塊,用于根據(jù)第五密文數(shù)據(jù)、第一隨機(jī)數(shù)據(jù)和密鑰進(jìn)行位運(yùn)算,得到明文數(shù)據(jù)。
本發(fā)明的上述方案至少包括以下有益效果:
在本發(fā)明的實(shí)施例中,通過(guò)明文數(shù)據(jù)與密鑰和第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算, 得到第一密文數(shù)據(jù),同時(shí)將密鑰與第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算,得到第二隨機(jī)數(shù)據(jù),并將得到的第二隨機(jī)數(shù)據(jù)與第一密文數(shù)據(jù)進(jìn)行位運(yùn)算,得到第二密文數(shù)據(jù),最后再對(duì)第二密文數(shù)據(jù)進(jìn)行反轉(zhuǎn)比特位操作,得到最終密文數(shù)據(jù),解決了信息的保密性和安全性差的問(wèn)題,達(dá)到了大幅增加破解難度,進(jìn)而增加信息的保密性和安全性的效果。
附圖說(shuō)明
圖1為現(xiàn)有技術(shù)中數(shù)據(jù)加密的流程圖;
圖2為本發(fā)明第一實(shí)施例中數(shù)據(jù)加密的方法的流程圖;
圖3為本發(fā)明第一實(shí)施例中得到第一密文數(shù)據(jù)的示意圖;
圖4為本發(fā)明第一實(shí)施例中得到第二隨機(jī)數(shù)據(jù)的示意圖;
圖5為本發(fā)明第一實(shí)施例中得到最終密文數(shù)據(jù)的示意圖;
圖6為本發(fā)明第二實(shí)施例中數(shù)據(jù)加密的方法的流程圖;
圖7為本發(fā)明第三實(shí)施例中數(shù)據(jù)加密的裝置的結(jié)構(gòu)示意圖;
圖8為本發(fā)明第四實(shí)施例中數(shù)據(jù)解密的方法的流程圖;
圖9為本發(fā)明第五實(shí)施例中數(shù)據(jù)解密的裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
第一實(shí)施例
如圖2所示,本發(fā)明的第一實(shí)施例提供了一種數(shù)據(jù)加密的方法,該方法包括:
步驟S21,根據(jù)明文數(shù)據(jù)、密鑰和第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算,得到第一密文數(shù)據(jù);
在本發(fā)明的第一實(shí)施例中,如圖3所示,明文數(shù)據(jù)可以先跟第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算(例如異或運(yùn)算)得到第三密文,然后再讓第三密文與密鑰進(jìn)行位 運(yùn)算(例如異或運(yùn)算)得到第一密文數(shù)據(jù)。當(dāng)然明文數(shù)據(jù)也可以先跟密鑰進(jìn)行位運(yùn)算(例如異或運(yùn)算)得到第三密文,然后再讓第三密文與第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算(例如異或運(yùn)算)得到第一密文數(shù)據(jù)。其中具體得到第一密文數(shù)據(jù)可以通過(guò)如下C語(yǔ)言實(shí)現(xiàn),c[i]=p[i]^r[(i+a)%rl]^k[(i+b)%kl],其中c表示第一密文數(shù)據(jù),i表示字節(jié)序數(shù),p表示明文數(shù)據(jù),r表示第一隨機(jī)數(shù)據(jù),rl表示第一隨機(jī)數(shù)據(jù)長(zhǎng)度,k表示密鑰,kl表示密鑰長(zhǎng)度,a是小于第一隨機(jī)數(shù)據(jù)長(zhǎng)度的正整數(shù),b小于密鑰長(zhǎng)度的正整數(shù)。
在本發(fā)明的第一實(shí)施例中,作為一個(gè)優(yōu)選示例,為了增加最終密文數(shù)據(jù)的破解難度,可以對(duì)第一密文數(shù)據(jù)作進(jìn)一步的處理,例如將第一密文數(shù)據(jù)的每個(gè)字節(jié)按照某種規(guī)則分別進(jìn)行循環(huán)移位,也可以再結(jié)合按位取反操作或與密鑰的校驗(yàn)和再次進(jìn)行異或運(yùn)算等,其中,循環(huán)移位可以參考密鑰的某個(gè)字節(jié)對(duì)8取模,也可以參考第一隨機(jī)數(shù)據(jù)的某個(gè)字節(jié)對(duì)8取模。
步驟S22,根據(jù)密鑰和第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算,得到第二隨機(jī)數(shù)據(jù);
在本發(fā)明的第一實(shí)施例中,如圖4所示,可以將密鑰與第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算(例如異或運(yùn)算),得到第二隨機(jī)數(shù)據(jù),且該第二隨機(jī)數(shù)據(jù)的長(zhǎng)度與第一隨機(jī)數(shù)據(jù)的長(zhǎng)度一樣。但是為了保證數(shù)據(jù)膨脹不是很嚴(yán)重,這個(gè)長(zhǎng)度值不宜過(guò)大。
在本發(fā)明的第一實(shí)施例中,還可以通過(guò)將第一隨機(jī)數(shù)據(jù)的每個(gè)字節(jié)(除了最后一個(gè)字節(jié))分別與后面的一個(gè)字節(jié)進(jìn)行按位異或運(yùn)算得到第二隨機(jī)數(shù)據(jù)。
步驟S23,將第二隨機(jī)數(shù)據(jù)插入到第一密文數(shù)據(jù)中,得到第二密文數(shù)據(jù);
步驟S24,對(duì)第二密文數(shù)據(jù)進(jìn)行反轉(zhuǎn)比特位操作,得到最終密文數(shù)據(jù)。
在本發(fā)明的第一實(shí)施例中,如圖5所示,可將步驟S22中得到的第二隨機(jī)數(shù)據(jù)插入到第一密文數(shù)據(jù)中,得到第二密文數(shù)據(jù),然后再對(duì)該到第二密文數(shù)據(jù)進(jìn)行反轉(zhuǎn)比特位操作,得到最終密文數(shù)據(jù)。
在本發(fā)明的第一實(shí)施例中,由于第一隨機(jī)數(shù)據(jù)每次都不同,使得加密后的最終密文數(shù)據(jù)是隨機(jī)變化的,即使密鑰很短或明文數(shù)據(jù)的長(zhǎng)度較小,最終密文數(shù)據(jù)的變化幅度也很大,而且無(wú)法根據(jù)最終密文數(shù)據(jù)的長(zhǎng)度準(zhǔn)確得知明文數(shù)據(jù)的長(zhǎng)度,從而增加破解難度,進(jìn)而增加信息的保密性和安全性。同時(shí)整個(gè)加密過(guò)程相對(duì)簡(jiǎn)單,加密效率較高。
第二實(shí)施例
如圖6所示,本發(fā)明的第二實(shí)施例提供了一種數(shù)據(jù)加密的方法,該方法包括:
步驟S61,根據(jù)明文數(shù)據(jù)的第一長(zhǎng)度值,確定出最終密文數(shù)據(jù)的第二長(zhǎng)度值,其中第二長(zhǎng)度值為大于預(yù)設(shè)數(shù)值的一個(gè)自然數(shù)的最小整數(shù)倍數(shù),且第二長(zhǎng)度值大于第一長(zhǎng)度值;
在本發(fā)明的第二實(shí)施例中,上述預(yù)設(shè)數(shù)值可以為2,當(dāng)然可以理解的是,在本發(fā)明的第二實(shí)施例中,并不限定預(yù)設(shè)數(shù)值的具體數(shù)值,可根據(jù)實(shí)際需要進(jìn)行調(diào)整。
步驟S62,根據(jù)第二長(zhǎng)度值與第一長(zhǎng)度值的差值,得到第一隨機(jī)數(shù)據(jù)的第三長(zhǎng)度值;
步驟S63,根據(jù)第三長(zhǎng)度值,生成第一隨機(jī)數(shù)據(jù),其中第三長(zhǎng)度值通過(guò)第一隨機(jī)數(shù)據(jù)的第一字節(jié)中的至少一個(gè)比特位表征;
在本發(fā)明的第二實(shí)施例中,可以通過(guò)步驟S61中的自然數(shù)和密鑰的校驗(yàn)和確定出具體是通過(guò)第一字節(jié)中的哪幾個(gè)比特位表征第一隨機(jī)數(shù)據(jù)的第三長(zhǎng)度值。當(dāng)然這幾個(gè)比特位可以是連續(xù)的,也可以不是連續(xù)的。另外第一隨機(jī)數(shù)據(jù)的第一字節(jié)中的其余比特位和后面的字節(jié)完全用隨機(jī)方式產(chǎn)生。
步驟S64,根據(jù)明文數(shù)據(jù)、密鑰和第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算,得到第一密文數(shù)據(jù);
在本發(fā)明的第二實(shí)施例中,如圖3所示,明文數(shù)據(jù)可以先跟第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算(例如異或運(yùn)算)得到第三密文,然后再讓第三密文與密鑰進(jìn)行位運(yùn)算(例如異或運(yùn)算)得到第一密文數(shù)據(jù)。當(dāng)然明文數(shù)據(jù)也可以先跟密鑰進(jìn)行位運(yùn)算(例如異或運(yùn)算)得到第三密文,然后再讓第三密文與第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算(例如異或運(yùn)算)得到第一密文數(shù)據(jù)。其中具體得到第一密文數(shù)據(jù)可以通過(guò)如下C語(yǔ)言實(shí)現(xiàn),c[i]=p[i]^r[(i+a)%rl]^k[(i+b)%kl],其中c表示第一密文數(shù)據(jù),i表示字節(jié)序數(shù),p表示明文數(shù)據(jù),r表示第一隨機(jī)數(shù)據(jù),rl表示第一隨機(jī)數(shù)據(jù)長(zhǎng)度,k表示密鑰,kl表示密鑰長(zhǎng)度,a是小于第一隨機(jī)數(shù)據(jù)長(zhǎng)度的正整數(shù),b小于密鑰長(zhǎng)度的正整數(shù)。
在本發(fā)明的第二實(shí)施例中,作為一個(gè)優(yōu)選示例,為了增加最終密文數(shù)據(jù)的 破解難度,可以對(duì)第一密文數(shù)據(jù)作進(jìn)一步的處理,例如將第一密文數(shù)據(jù)的每個(gè)字節(jié)按照某種規(guī)則分別進(jìn)行循環(huán)移位,也可以再結(jié)合按位取反操作或與密鑰的校驗(yàn)和再次進(jìn)行異或運(yùn)算等,其中,循環(huán)移位可以參考密鑰的某個(gè)字節(jié)對(duì)8取模,也可以參考第一隨機(jī)數(shù)據(jù)的某個(gè)字節(jié)對(duì)8取模。
步驟S65,根據(jù)密鑰和第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算,得到第二隨機(jī)數(shù)據(jù);
在本發(fā)明的第二實(shí)施例中,如圖4所示,可以將密鑰與第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算(例如異或運(yùn)算),得到第二隨機(jī)數(shù)據(jù),且該第二隨機(jī)數(shù)據(jù)的長(zhǎng)度與第一隨機(jī)數(shù)據(jù)的長(zhǎng)度一樣。但是為了保證數(shù)據(jù)膨脹不是很嚴(yán)重,這個(gè)長(zhǎng)度值不宜過(guò)大。
在本發(fā)明的第二實(shí)施例中,還可以通過(guò)將第一隨機(jī)數(shù)據(jù)的每個(gè)字節(jié)(除了最后一個(gè)字節(jié))分別與后面的一個(gè)字節(jié)進(jìn)行按位異或運(yùn)算得到第二隨機(jī)數(shù)據(jù)。
步驟S66,將第二隨機(jī)數(shù)據(jù)插入到第一密文數(shù)據(jù)中,得到第二密文數(shù)據(jù);
步驟S67,對(duì)第二密文數(shù)據(jù)進(jìn)行反轉(zhuǎn)比特位操作,得到最終密文數(shù)據(jù)。
在本發(fā)明的第二實(shí)施例中,如圖5所示,可將步驟S65中得到的第二隨機(jī)數(shù)據(jù)插入到第一密文數(shù)據(jù)中,得到第二密文數(shù)據(jù),然后再對(duì)該到第二密文數(shù)據(jù)進(jìn)行反轉(zhuǎn)比特位操作,得到最終密文數(shù)據(jù)。
在本發(fā)明的第二實(shí)施例中,由于第一隨機(jī)數(shù)據(jù)每次都不同,使得加密后的最終密文數(shù)據(jù)是隨機(jī)變化的,即使密鑰很短或明文數(shù)據(jù)的長(zhǎng)度較小,最終密文數(shù)據(jù)的變化幅度也很大,而且無(wú)法根據(jù)最終密文數(shù)據(jù)的長(zhǎng)度準(zhǔn)確得知明文數(shù)據(jù)的長(zhǎng)度,從而增加破解難度,進(jìn)而增加信息的保密性和安全性。同時(shí)整個(gè)加密過(guò)程相對(duì)簡(jiǎn)單,加密效率較高。
其中,在本發(fā)明的第二實(shí)施例中,上述步驟S66具體包括:首先根據(jù)第二長(zhǎng)度值、密鑰的第四長(zhǎng)度值以及密鑰的校驗(yàn)和,確定出第二隨機(jī)數(shù)據(jù)在第一密文數(shù)據(jù)中的插入位置;然后再根據(jù)插入位置,將第二隨機(jī)數(shù)據(jù)插入到第一密文數(shù)據(jù)中,得到第二密文數(shù)據(jù)。
在本發(fā)明的第二實(shí)施例中,可通過(guò)公式pos_1=((cl+crc)×kl)%cl,計(jì)算出插入位置,其中pos_1表示插入位置,cl表示最終密文數(shù)據(jù)的第二長(zhǎng)度值,crc表示密鑰的校驗(yàn)和,kl表示密鑰的第四長(zhǎng)度值。
其中,在本發(fā)明的第二實(shí)施例中,上述步驟S67具體包括:首先根據(jù)插入 位置和第四長(zhǎng)度值,確定出在第二密文數(shù)據(jù)中進(jìn)行反轉(zhuǎn)比特位操作的開(kāi)始位置;然后再反轉(zhuǎn)第二密文數(shù)據(jù)中位于開(kāi)始位置后的每個(gè)字節(jié)中的一個(gè)比特位,得到最終密文數(shù)據(jù),其中每個(gè)字節(jié)需要反轉(zhuǎn)的比特序號(hào)由該字節(jié)前面的字節(jié)組成的比特流中的至少三個(gè)比特位決定。
在本發(fā)明的第二實(shí)施例中,開(kāi)始位置對(duì)應(yīng)的數(shù)值不宜過(guò)大,具體地,可以根據(jù)插入位置和第四長(zhǎng)度值來(lái)定,例如取第四長(zhǎng)度值與插入位置對(duì)應(yīng)的數(shù)值的最小者加1。
在本發(fā)明的第二實(shí)施例中,先簡(jiǎn)單闡述一下反轉(zhuǎn)比特位的方法,該方法為:先找一段用于選取比特位置的參考數(shù)據(jù),將其視作連續(xù)的二進(jìn)制比特流,從中選取3比特(其8種取值剛好可以),表示一字節(jié)中的8個(gè)比特位(第0位到第7位),按照這個(gè)值對(duì)待處理數(shù)據(jù)的一字節(jié)中的某個(gè)比特位取反,比如用二進(jìn)制表示的一字節(jié)數(shù)據(jù)為“00000000”,反轉(zhuǎn)第0比特位后是“00000001”,再反轉(zhuǎn)第2比特位后是“00000101”。對(duì)于一個(gè)字節(jié),可以使用多次反轉(zhuǎn)比特位操作,這樣可以提高信息安全性。
在本發(fā)明的第二實(shí)施例中,為了使用方便,每個(gè)字節(jié)需要反轉(zhuǎn)的比特序號(hào)可以由該字節(jié)前面的字節(jié)組成的比特流中的三個(gè)比特位決定,當(dāng)然這三個(gè)比特位可以是連續(xù)的,也可以不是連續(xù)的,具體可以根據(jù)密鑰的檢驗(yàn)和以及第二密文數(shù)據(jù)的字節(jié)序號(hào)等確定。
在本發(fā)明的第二實(shí)施例中,作為一個(gè)優(yōu)選示例,可以從第二密文數(shù)據(jù)的第二字節(jié)開(kāi)始反轉(zhuǎn)比特,反轉(zhuǎn)每個(gè)字節(jié)的哪個(gè)比特,可以根據(jù)前一字節(jié)的值,從密鑰字節(jié)組成的比特流中選出三比特確定。
在本發(fā)明的第二實(shí)施例中,假設(shè)自然數(shù)取值為4,那么上述數(shù)據(jù)加密的方法的C語(yǔ)言實(shí)現(xiàn)代碼為:
第三實(shí)施例
如圖7所示,本發(fā)明的第三實(shí)施例提供了一種數(shù)據(jù)加密的裝置,該裝置包括:
第一運(yùn)算模塊71,用于根據(jù)明文數(shù)據(jù)、密鑰和第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算,得到第一密文數(shù)據(jù);
第二運(yùn)算模塊72,用于根據(jù)密鑰和第一隨機(jī)數(shù)據(jù)進(jìn)行位運(yùn)算,得到第二 隨機(jī)數(shù)據(jù);
插入模塊73,用于將第二隨機(jī)數(shù)據(jù)插入到第一密文數(shù)據(jù)中,得到第二密文數(shù)據(jù);
第一操作模塊74,用于對(duì)第二密文數(shù)據(jù)進(jìn)行反轉(zhuǎn)比特位操作,得到最終密文數(shù)據(jù)。
其中,裝置還包括:
第一確定模塊,用于根據(jù)明文數(shù)據(jù)的第一長(zhǎng)度值,確定出最終密文數(shù)據(jù)的第二長(zhǎng)度值,其中第二長(zhǎng)度值為大于預(yù)設(shè)數(shù)值的一個(gè)自然數(shù)的最小整數(shù)倍數(shù),且第二長(zhǎng)度值大于第一長(zhǎng)度值;
第二確定模塊,用于根據(jù)第二長(zhǎng)度值與第一長(zhǎng)度值的差值,得到第一隨機(jī)數(shù)據(jù)的第三長(zhǎng)度值;
生成模塊,用于根據(jù)第三長(zhǎng)度值,生成第一隨機(jī)數(shù)據(jù),其中第三長(zhǎng)度值通過(guò)第一隨機(jī)數(shù)據(jù)的第一字節(jié)中的至少一個(gè)比特位表征。
其中,插入模塊73包括:
第一確定單元,用于根據(jù)第二長(zhǎng)度值、密鑰的第四長(zhǎng)度值以及密鑰的校驗(yàn)和,確定出第二隨機(jī)數(shù)據(jù)在第一密文數(shù)據(jù)中的插入位置;
第二確定單元,用于根據(jù)插入位置,將第二隨機(jī)數(shù)據(jù)插入到第一密文數(shù)據(jù)中,得到第二密文數(shù)據(jù)。
其中,第一操作模塊74包括:
第三確定單元,用于根據(jù)插入位置和第四長(zhǎng)度值,確定出在第二密文數(shù)據(jù)中進(jìn)行反轉(zhuǎn)比特位操作的開(kāi)始位置;
第一反轉(zhuǎn)單元,用于反轉(zhuǎn)第二密文數(shù)據(jù)中位于開(kāi)始位置后的每個(gè)字節(jié)中的一個(gè)比特位,得到最終密文數(shù)據(jù),其中每個(gè)字節(jié)需要反轉(zhuǎn)的比特序號(hào)由該字節(jié)前面的字節(jié)組成的比特流中的至少三個(gè)比特位決定。
在本發(fā)明的第三實(shí)施例中,由于第一隨機(jī)數(shù)據(jù)每次都不同,使得加密后的最終密文數(shù)據(jù)是隨機(jī)變化的,即使密鑰很短或明文數(shù)據(jù)的長(zhǎng)度較小,最終密文數(shù)據(jù)的變化幅度也很大,而且無(wú)法根據(jù)最終密文數(shù)據(jù)的長(zhǎng)度準(zhǔn)確得知明文數(shù)據(jù)的長(zhǎng)度,從而增加破解難度,進(jìn)而增加信息的保密性和安全性。同時(shí)整個(gè)加密過(guò)程相對(duì)簡(jiǎn)單,加密效率較高。
需要說(shuō)明的是,本發(fā)明實(shí)施例提供的數(shù)據(jù)加密的裝置是應(yīng)用上述數(shù)據(jù)加密的方法的裝置,即上述方法的所有實(shí)施例均適用于該裝置,且均能達(dá)到相同或相似的有益效果。
第四實(shí)施例
如圖8所示,本發(fā)明的第四實(shí)施例提供了一種數(shù)據(jù)解密的方法,該方法包括:
步驟S81,接收最終密文數(shù)據(jù);
步驟S82,對(duì)最終密文數(shù)據(jù)進(jìn)行比特位反轉(zhuǎn)操作,得到第四密文數(shù)據(jù);
步驟S83,從第四密文數(shù)據(jù)中提取出第二隨機(jī)數(shù)據(jù),得到第五密文數(shù)據(jù);
步驟S84,根據(jù)第二隨機(jī)數(shù)據(jù)與密鑰進(jìn)行位運(yùn)算,得到第一隨機(jī)數(shù)據(jù);
步驟S85,根據(jù)第五密文數(shù)據(jù)、第一隨機(jī)數(shù)據(jù)和密鑰進(jìn)行位運(yùn)算,得到明文數(shù)據(jù)。
在本發(fā)明的第四實(shí)施例中,數(shù)據(jù)解密的方法的過(guò)程基本上與上述數(shù)據(jù)加密的方法的過(guò)程相反。即當(dāng)接收到最終密文數(shù)據(jù)后,首先要對(duì)最終密文數(shù)據(jù)進(jìn)行比特位反轉(zhuǎn)操作,將加密時(shí)反轉(zhuǎn)的比特位還原,再找到之前插入的第二隨機(jī)數(shù)據(jù),并從第四密文數(shù)據(jù)中提取出第二隨機(jī)數(shù)據(jù),得到第五密文數(shù)據(jù),同時(shí)將第二隨機(jī)數(shù)據(jù)與密鑰進(jìn)行位運(yùn)算(例如異或運(yùn)算),解出第一隨機(jī)數(shù)據(jù),最后將第五密文數(shù)據(jù)與第一隨機(jī)數(shù)據(jù)和密鑰進(jìn)行位運(yùn)算(例如異或運(yùn)算),得到明文數(shù)據(jù)。
其中,在本發(fā)明的第四實(shí)施例中,在執(zhí)行步驟S81之前,上述方法還包括:根據(jù)最終密文數(shù)據(jù)的第二長(zhǎng)度值、密鑰的校驗(yàn)和以及密鑰的第四長(zhǎng)度值,確定出第二隨機(jī)數(shù)據(jù)在第四密文數(shù)據(jù)中的插入位置。
在本發(fā)明的第四實(shí)施例中,與上述加密數(shù)據(jù)的方法類似,可通過(guò)公式pos_1=((cl+crc)×kl)%cl,計(jì)算出插入位置,其中pos_1表示插入位置,cl表示最終密文數(shù)據(jù)的第二長(zhǎng)度值,crc表示密鑰的校驗(yàn)和,kl表示密鑰的第四長(zhǎng)度值。
相應(yīng)地,步驟S82具體包括:首先根據(jù)插入位置與第四長(zhǎng)度值,確定出在最終密文數(shù)據(jù)中進(jìn)行比特位反轉(zhuǎn)操作的開(kāi)始位置;然后再反轉(zhuǎn)最終密文數(shù)據(jù)中位于開(kāi)始位置后的每個(gè)字節(jié)中的一個(gè)比特位,得到第四密文數(shù)據(jù),其中每個(gè)字 節(jié)需要反轉(zhuǎn)的比特序號(hào)由該字節(jié)前面的字節(jié)組成的比特流中的至少三個(gè)比特位決定。
在本發(fā)明的第四實(shí)施例中,與上述加密數(shù)據(jù)的方法類似,開(kāi)始位置可以根據(jù)插入位置和第四長(zhǎng)度值來(lái)定,例如取第四長(zhǎng)度值與插入位置對(duì)應(yīng)的數(shù)值的最小者加1。
其中,在本發(fā)明的第四實(shí)施例中,第二隨機(jī)數(shù)據(jù)的長(zhǎng)度值通過(guò)第二隨機(jī)數(shù)據(jù)的第一字節(jié)中的至少一個(gè)比特位表征,
相應(yīng)地,上述步驟S83具體為:根據(jù)插入位置和至少一個(gè)比特位,從第四密文數(shù)據(jù)中提取出第二隨機(jī)數(shù)據(jù),得到第五密文數(shù)據(jù)。
第五實(shí)施例
如圖9所示,本發(fā)明的第五實(shí)施例提供了一種數(shù)據(jù)解密的裝置,該裝置包括:
接收模塊91,用于接收最終密文數(shù)據(jù);
第二操作模塊92,用于對(duì)最終密文數(shù)據(jù)進(jìn)行比特位反轉(zhuǎn)操作,得到第四密文數(shù)據(jù);
提取模塊93,用于從第四密文數(shù)據(jù)中提取出第二隨機(jī)數(shù)據(jù),得到第五密文數(shù)據(jù);
第三運(yùn)算模塊94,用于根據(jù)第二隨機(jī)數(shù)據(jù)與密鑰進(jìn)行位運(yùn)算,得到第一隨機(jī)數(shù)據(jù);
第四運(yùn)算模塊95,用于根據(jù)第五密文數(shù)據(jù)、第一隨機(jī)數(shù)據(jù)和密鑰進(jìn)行位運(yùn)算,得到明文數(shù)據(jù)。
其中,裝置還包括:
第三確定模塊,用于根據(jù)最終密文數(shù)據(jù)的第二長(zhǎng)度值、密鑰的校驗(yàn)和以及密鑰的第四長(zhǎng)度值,確定出第二隨機(jī)數(shù)據(jù)在第四密文數(shù)據(jù)中的插入位置;
相應(yīng)地,第二操作模塊92包括:
第四確定單元,用于根據(jù)插入位置與第四長(zhǎng)度值,確定出在最終密文數(shù)據(jù)中進(jìn)行比特位反轉(zhuǎn)操作的開(kāi)始位置;
第二反轉(zhuǎn)單元,用于反轉(zhuǎn)最終密文數(shù)據(jù)中位于開(kāi)始位置后的每個(gè)字節(jié)中的一個(gè)比特位,得到第四密文數(shù)據(jù),其中每個(gè)字節(jié)需要反轉(zhuǎn)的比特序號(hào)由該字節(jié) 前面的字節(jié)組成的比特流中的至少三個(gè)比特位決定。
其中,第二隨機(jī)數(shù)據(jù)的長(zhǎng)度值通過(guò)第二隨機(jī)數(shù)據(jù)的第一字節(jié)中的至少一個(gè)比特位表征,
相應(yīng)地,提取模塊93包括:
提取單元,用于根據(jù)插入位置和至少一個(gè)比特位,從第四密文數(shù)據(jù)中提取出第二隨機(jī)數(shù)據(jù),得到第五密文數(shù)據(jù)。
需要說(shuō)明的是,本發(fā)明實(shí)施例提供的數(shù)據(jù)解密的裝置是應(yīng)用上述數(shù)據(jù)解密的方法的裝置,即上述方法的所有實(shí)施例均適用于該裝置,且均能達(dá)到相同或相似的有益效果。
以上所述是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。