本發(fā)明涉及數(shù)據(jù)的加解密的技術(shù)領(lǐng)域,尤其是指一種基于矩陣運(yùn)算的加密解密方法。
背景技術(shù):
隨著信息化時代的到來,信息安全引起了人們越來越多的重視,數(shù)據(jù)在傳輸過程中的安全性也成為了人們的熱議話題。最開始的數(shù)據(jù)加密算法都是使用簡單的替換法,將待加密的信息用其他一些不相關(guān)的信息進(jìn)行替換,當(dāng)然此替換存在一定規(guī)律,從而可以保證解密端順利解密。但是隨著技術(shù)的進(jìn)步,人們發(fā)現(xiàn)單純地用替換法對信息進(jìn)行加密,攻擊者很有可能經(jīng)過大量積累掌握了替換的規(guī)律,從而從密文數(shù)據(jù)中解出明文,竊取秘密信息。因此當(dāng)今的加密算法思想則集中改為了使用某種變換,即利用一定的運(yùn)算規(guī)則對待加密數(shù)據(jù)進(jìn)行運(yùn)算處理,使其失去了本來面目,無法再通過大量的積累分析還原出明文。這樣經(jīng)過變換處理的加密信息在傳輸過程中即便被攻擊者獲取也無法破譯出密文數(shù)據(jù)中所隱含的明文信息,從而保證了信息傳輸過程的安全性。
現(xiàn)有通過運(yùn)算規(guī)則對待加密數(shù)據(jù)進(jìn)行運(yùn)算處理的方法中,利用矩陣運(yùn)算來實(shí)現(xiàn)對待加密數(shù)據(jù)的加密,如公開號為cn102314580a的中國發(fā)明專利公開了一種基于向量和矩陣運(yùn)算的支持計(jì)算的加密方法,包括以下步驟:步驟一:將原始數(shù)據(jù)轉(zhuǎn)換為向量,并通過加密矩陣進(jìn)行加密,從而得到一個加密的外包向量;步驟二:將計(jì)算參數(shù)轉(zhuǎn)換為向量,并通過加密矩陣進(jìn)行加密,從而得到一個加密的計(jì)算參數(shù)向量;步驟三:對加密的外包向量和計(jì)算參數(shù)向量進(jìn)行標(biāo)量積、加、減、乘運(yùn)算,從而得到加密的計(jì)算結(jié)果;步驟四:用戶通過加密矩陣與加密的計(jì)算結(jié)果的運(yùn)算,得到計(jì)算結(jié)果的明文。上述方法雖然在數(shù)據(jù)加密或加密數(shù)據(jù)的運(yùn)算中始終是一種具有安全性的加密方案,起到了保護(hù)用戶隱私的作用,但是所述方法不能檢測數(shù)據(jù)傳輸過程中是否被篡改,因此不能保證信息傳輸過程的安全性。
技術(shù)實(shí)現(xiàn)要素:
為此,本發(fā)明所要解決的技術(shù)問題在于克服現(xiàn)有技術(shù)中無法檢測數(shù)據(jù)傳輸過程中是否被篡改的問題從而提供一種可以保證信息傳輸過程安全性的基于矩陣運(yùn)算的加密解密方法。
為解決上述技術(shù)問題,本發(fā)明的一種基于矩陣運(yùn)算的加密解密方法,其步驟如下:步驟s1:數(shù)據(jù)傳送端利用原始數(shù)據(jù)對基矩陣進(jìn)行變換,將所述基矩陣轉(zhuǎn)變成變換矩陣,判斷所述變換矩陣是否為可逆矩陣,若是將所述原始數(shù)據(jù)通過所述變換矩陣轉(zhuǎn)換成密文數(shù)據(jù),所述數(shù)據(jù)傳送端將所述密文數(shù)據(jù)和所述原始數(shù)據(jù)一并發(fā)送至數(shù)據(jù)接收端;步驟s2:數(shù)據(jù)接收端根據(jù)接收到的明文信息對所述基矩陣進(jìn)行變換,將所述基矩陣轉(zhuǎn)變成變換矩陣,并獲得變換矩陣的逆矩陣,然后將接收到的密文數(shù)據(jù)根據(jù)所述逆矩陣解析出明文信息;步驟s3:將解析出的明文信息與所述數(shù)據(jù)接收端接收到的明文信息作比較,如果比較結(jié)果為一致,則判定為所述密文數(shù)據(jù)未被篡改;如果比較結(jié)果為不一致,則判定為所述密文數(shù)據(jù)被篡改。
在本發(fā)明的一個實(shí)施例中,所述基矩陣由數(shù)據(jù)傳送端與數(shù)據(jù)接收端約定。
在本發(fā)明的一個實(shí)施例中,所述基矩陣是可逆矩陣。
在本發(fā)明的一個實(shí)施例中,所述步驟s1中,結(jié)合原始數(shù)據(jù)對所述基矩陣進(jìn)行變換的具體步驟如下:首先,若基矩陣為n階矩陣,將所述原始數(shù)據(jù)轉(zhuǎn)換成m*n的原始矩陣數(shù)據(jù);然后利用原始矩陣數(shù)據(jù)的第一行元素分別替換所述基矩陣的對角線元素,從而使所述基矩陣一次轉(zhuǎn)變成變換矩陣,其中:所述m和n均為正整數(shù),所述m為x/n的向上取整,所述x為原始數(shù)據(jù)中的數(shù)據(jù)個數(shù)。
在本發(fā)明的一個實(shí)施例中,所述步驟s1和s2中,判斷該變換矩陣是否為可逆矩陣的方法為:判斷所述變換矩陣的行列式是否為零,若不為零,則該變換矩陣為可逆矩陣;若為零,則繼續(xù)變換所述基矩陣,直至得到可逆的變換矩陣。
在本發(fā)明的一個實(shí)施例中,繼續(xù)變換所述基矩陣的方法為:利用原始矩陣數(shù)據(jù)的下一行的各元素依次替換所述基矩陣對角線的元素,并在每替換一個元素后判斷所形成的變換矩陣的行列式是否為零,若不為零,停止替換,得到可逆的變換矩陣;若為零,繼續(xù)替換下一個元素,直到所形成的變換矩陣的行列式不為零。
本發(fā)明的上述技術(shù)方案相比現(xiàn)有技術(shù)具有以下優(yōu)點(diǎn):
本發(fā)明所述數(shù)據(jù)傳送端通過構(gòu)造加密矩陣將原始數(shù)據(jù)轉(zhuǎn)換成密文數(shù)據(jù),數(shù)據(jù)接收端再通過解密矩陣解析出明文信息,將解析出的明文信息與所述數(shù)據(jù)接收端接收到的明文信息作比較從而可以判斷出解析出的明文信息是否真實(shí)可信。
附圖說明
為了使本發(fā)明的內(nèi)容更容易被清楚的理解,下面根據(jù)本發(fā)明的具體實(shí)施例并結(jié)合附圖,對本發(fā)明作進(jìn)一步詳細(xì)的說明,其中
圖1是本發(fā)明所述方法的流程圖。
具體實(shí)施方式
如圖1所示,本實(shí)施例提供一種基于矩陣運(yùn)算的加密解密方法,其步驟如下:步驟s1:數(shù)據(jù)傳送端利用原始數(shù)據(jù)對基矩陣進(jìn)行變換,將所述基矩陣轉(zhuǎn)變成變換矩陣,判斷所述變換矩陣是否為可逆矩陣,若是將所述原始數(shù)據(jù)通過所述變換矩陣轉(zhuǎn)換成密文數(shù)據(jù),所述數(shù)據(jù)傳送端將所述密文數(shù)據(jù)和所述原始數(shù)據(jù)一并發(fā)送至數(shù)據(jù)接收端;步驟s2:數(shù)據(jù)接收端根據(jù)接收到的明文信息對所述基矩陣進(jìn)行變換,將所述基矩陣轉(zhuǎn)變成變換矩陣,并獲得變換矩陣的逆矩陣,然后將接收到的密文數(shù)據(jù)根據(jù)所述逆矩陣解析出明文信息;步驟s3:將解析出的明文信息與所述數(shù)據(jù)接收端接收到的明文信息作比較,如果比較結(jié)果為一致,則判定為所述密文數(shù)據(jù)未被篡改;如果比較結(jié)果為不一致,則判定為所述密文數(shù)據(jù)被篡改。
本實(shí)施例所述一種基于矩陣運(yùn)算的加密解密方法,所述步驟s1中,數(shù)據(jù)傳送端利用原始數(shù)據(jù)對所述基矩陣進(jìn)行變換,將所述基矩陣轉(zhuǎn)變成變換矩陣,判斷所述變換矩陣是否為可逆矩陣,若是將所述原始數(shù)據(jù)通過所述變換矩陣轉(zhuǎn)換成密文數(shù)據(jù),由于對原始數(shù)據(jù)的加密不是簡單的替換,而是通過矩陣運(yùn)算改變了原始數(shù)據(jù)的面貌,因此攻擊者無法通過密文的表面數(shù)據(jù)分析出相應(yīng)的信息來;再者,所述數(shù)據(jù)傳送端將所述密文數(shù)據(jù)和所述原始數(shù)據(jù)一并發(fā)送至數(shù)據(jù)接收端,所述步驟s1構(gòu)造變換矩陣時有效地利用了要傳輸?shù)脑夹畔?,因?yàn)槊看蝹鬏數(shù)脑夹畔⒍疾幌嗤?,所以?gòu)造出的加解矩陣也不相同,導(dǎo)致密文數(shù)據(jù)規(guī)律性降低,有效克服了攻擊者在大量累積傳輸數(shù)據(jù)后得出規(guī)律解出明文的問題。所述步驟s2中,數(shù)據(jù)接收端根據(jù)接收到的明文信息對所述基矩陣進(jìn)行變換,將所述基矩陣轉(zhuǎn)變成變換矩陣,并獲得變換矩陣的逆矩陣,然后將接收到的密文數(shù)據(jù)根據(jù)所述逆矩陣解析出明文信息,所述步驟s2構(gòu)造變換矩陣的過程中有效地利用了接收到的明文信息,有利于數(shù)據(jù)接收端對密文數(shù)據(jù)進(jìn)行解密,由于數(shù)據(jù)傳輸過程中不能確定數(shù)據(jù)是否已被篡改,所以數(shù)據(jù)接收端接收到的明文不能保證就是原始數(shù)據(jù),因此需要進(jìn)一步驗(yàn)證;所述步驟s3中,將解析出的明文信息與所述數(shù)據(jù)接收端接收到的明文信息作比較,如果比較結(jié)果為一致,則判定為所述密文數(shù)據(jù)未被篡改;如果比較結(jié)果為不一致,則判定為所述密文數(shù)據(jù)被篡改,如此有效檢測出數(shù)據(jù)傳輸過程中是否被篡改,進(jìn)一步保證了數(shù)據(jù)的真實(shí)性。
所述步驟s1中,數(shù)據(jù)傳送端利用原始數(shù)據(jù)對所述基矩陣進(jìn)行變換,將所述基矩陣轉(zhuǎn)變成變換矩陣,所述變換矩陣相當(dāng)于加密矩陣。所述原始數(shù)據(jù)通過所述變換矩陣轉(zhuǎn)換成密文數(shù)據(jù)的方法很多,如可以將原始數(shù)據(jù)與所述變換矩陣相乘的方式獲得密文數(shù)據(jù),若原始數(shù)據(jù)用a表示,變換矩陣用b表示,密文數(shù)據(jù)用c表示,則所述a*b=c。
所述數(shù)據(jù)傳送端與所述數(shù)據(jù)接收端需構(gòu)建一個相同的基矩陣,所述基矩陣是數(shù)據(jù)傳送端與數(shù)據(jù)接收端約定的矩陣,從而有利于數(shù)據(jù)接收端的解密,有效保證數(shù)據(jù)傳輸?shù)陌踩裕鉀Q了在傳輸過程中數(shù)據(jù)可能發(fā)生的泄露問題,同時有效避免了其在傳輸過程中可能會遭到惡意篡改的問題;所述基矩陣是可逆矩陣,可以保證所述基矩陣轉(zhuǎn)變成變換矩陣后,所述變換矩陣也是可逆矩陣,從而有利于數(shù)據(jù)接收端根據(jù)所述變換矩陣的逆矩陣和密文數(shù)據(jù)解析出明文。
下面詳細(xì)說明所述步驟s1中如何利用原始數(shù)據(jù)對所述基矩陣進(jìn)行變換,將所述基矩陣轉(zhuǎn)變成變換矩陣:首先,若基矩陣為n階矩陣,將所述原始數(shù)據(jù)轉(zhuǎn)換成m*n的矩陣,其中所述m和n均為正整數(shù),所述m為x/n的向上取整,所述x為原始數(shù)據(jù)中的數(shù)據(jù)個數(shù)。具體地,若原始數(shù)據(jù)中存有x個數(shù)據(jù),則x除于n后得到余數(shù)若為零,則將該x除于n后得到商設(shè)為m,若x除于n后得到余數(shù)不為零,則將該x除于n后得到商加1后設(shè)為m。如原始數(shù)據(jù)中存有100個數(shù)據(jù),而基矩陣為5階矩陣,則100除于5后商為20,余數(shù)為零,則將數(shù)據(jù)20設(shè)為m,此時所述原始數(shù)據(jù)就可以轉(zhuǎn)換成20*5的矩陣。若原始數(shù)據(jù)中存有100個數(shù)據(jù),而基矩陣為6階矩陣,則100除于6后商為16,余數(shù)為4,則將數(shù)據(jù)17設(shè)為m,此時所述原始數(shù)據(jù)就可以轉(zhuǎn)換成17*6的矩陣。對于轉(zhuǎn)變成矩陣的原始數(shù)據(jù),如果數(shù)據(jù)不足,可以補(bǔ)零;然后利用原始矩陣數(shù)據(jù)的第一行元素分別替換所述基矩陣的對角線元素,具體地,將所述基矩陣的對角線元素a11、a22…ann分別替換成原始數(shù)據(jù)的a11、a12…a1n,即將所述基矩陣的對角線元素a11替換成原始數(shù)據(jù)的a11,將所述基矩陣的對角線元素a22替換成原始數(shù)據(jù)的a12,依次順序,將所述基矩陣的對角線元素ann替換成原始數(shù)據(jù)的a1n,從而使所述基矩陣一次轉(zhuǎn)變成變換矩陣。
本發(fā)明由于利用所述變換矩陣的逆矩陣和密文數(shù)據(jù)可以共同解析出明文,因此所述變換矩陣也必須是可逆矩陣,因此需要判斷該變換矩陣是否為可逆矩陣,而要保證矩陣是可逆矩陣,則矩陣的行列式值不為零,具體地,判斷所述變換矩陣的行列式是否為零,若不為零,則該變換矩陣為可逆矩陣;若為零,則繼續(xù)變換所述基矩陣,直至得到可逆的變換矩陣。若經(jīng)過一次轉(zhuǎn)變后的變換矩陣的行列式為零,則需要繼續(xù)變換所述基矩陣,繼續(xù)變換所述基矩陣的方法為:利用原始矩陣數(shù)據(jù)的下一行的各元素依次替換所述基矩陣對角線的元素,并在每替換一個元素后判斷所形成的變換矩陣的行列式是否為零,若不為零,停止替換,得到可逆的變換矩陣;若為零,繼續(xù)替換下一個元素,直到所形成的變換矩陣的行列式不為零。具體地,利用原始矩陣數(shù)據(jù)的第二行第一個元素替換所述基矩陣對角線的第一個元素。具體地,將所述基矩陣的對角線的第一個元素a11替換成原始數(shù)據(jù)中的第二行第一列a12的數(shù)據(jù),使所述基矩陣二次轉(zhuǎn)變成變換矩陣,此時還需要判斷二次轉(zhuǎn)變后的變換矩陣的行列式是否為零,如果不為零,則二次轉(zhuǎn)變后的變換矩陣就是最終的變換矩陣;如果為零,則順序利用原始矩陣數(shù)據(jù)的第二行第二個元素替換所述基矩陣對角線的第二個元素,即將所述基矩陣的對角線的第二個元素a22替換成原始數(shù)據(jù)中的第二行第二列a22的數(shù)據(jù),繼續(xù)驗(yàn)證三次轉(zhuǎn)變后的變換矩陣的行列式是否為零,直至得到變換矩陣的行列式不等于零為止,從而確定出最終的變換矩陣。
所述步驟s2中,所述數(shù)據(jù)接收端將接收到的明文信息對所述基矩陣進(jìn)行變換,將所述基矩陣轉(zhuǎn)變成變換矩陣,并獲得變換矩陣的逆矩陣,此時所述逆矩陣就是構(gòu)造的解密矩陣。
所述數(shù)據(jù)接收端根據(jù)接收到的明文信息對所述基矩陣進(jìn)行變換的規(guī)則和所述步驟s1中數(shù)據(jù)傳送端利用原始數(shù)據(jù)對所述基矩陣進(jìn)行變換的規(guī)則相同,從而保證變換后矩陣的一致性,避免了數(shù)據(jù)在傳輸過程中可能發(fā)生的泄露問題。具體地,考慮到所述數(shù)據(jù)接收端能快速、順利的解密,所述數(shù)據(jù)傳送端和所述數(shù)據(jù)接收端可提前約定對所述基矩陣的變換規(guī)律,所述數(shù)據(jù)接收端按照與所述數(shù)據(jù)傳送端相同的構(gòu)建方式,將所述基矩陣轉(zhuǎn)變成變換矩陣,通過所述變換矩陣的逆矩陣以及接收到的密文數(shù)據(jù)可以解析出對應(yīng)的明文。具體地,若原始數(shù)據(jù)用a表示,變換矩陣用b表示,密文數(shù)據(jù)用c表示,則所述a*b=c;那么所述數(shù)據(jù)接收端解析數(shù)據(jù)的方法為:,其中就是變化矩陣的逆矩陣,從而根據(jù)所述逆矩陣就可以將密文數(shù)據(jù)以明文的形式解析出來。
所述步驟s3中,將解析出的明文信息與所述數(shù)據(jù)接收端接收到的明文信息作比較,若比對結(jié)果一致,則認(rèn)為解析出的明文信息真實(shí)可信,進(jìn)一步說明數(shù)據(jù)傳輸過程中并沒有遭到惡意攻擊;若比對不一致,在排除算法錯誤的可能性后則可以判定數(shù)據(jù)已經(jīng)被篡改,則認(rèn)為信息傳輸有誤,解析出的明文信息不可信,可以不予采用,需要重新獲取數(shù)據(jù)。
綜上,本發(fā)明所述技術(shù)方案具有以下優(yōu)點(diǎn):
1.本發(fā)明所述基于矩陣運(yùn)算的加密解密方法,所述步驟s1中,數(shù)據(jù)傳送端利用原始數(shù)據(jù)對所述基矩陣進(jìn)行變換,將所述基矩陣轉(zhuǎn)變成變換矩陣,所述原始數(shù)據(jù)通過所述變換矩陣轉(zhuǎn)換成密文數(shù)據(jù),由于對原始數(shù)據(jù)的加密不是簡單的替換,而是通過矩陣運(yùn)算改變了原始數(shù)據(jù)的面貌,因此攻擊者無法通過密文的表面數(shù)據(jù)分析出相應(yīng)的信息來;再者,所述數(shù)據(jù)傳送端將所述密文數(shù)據(jù)和所述原始數(shù)據(jù)一并發(fā)送至數(shù)據(jù)接收端,所述步驟s1構(gòu)造變換矩陣時有效地利用了要傳輸?shù)脑夹畔ⅲ驗(yàn)槊看蝹鬏數(shù)脑夹畔⒍疾幌嗤?,所以?gòu)造出的加解矩陣也不相同,導(dǎo)致密文數(shù)據(jù)規(guī)律性降低,有效克服了攻擊者在大量累積傳輸數(shù)據(jù)后得出規(guī)律解出明文的問題。所述步驟s2中,數(shù)據(jù)接收端根據(jù)接收到的明文信息對所述基矩陣進(jìn)行變換,將所述基矩陣轉(zhuǎn)變成變換矩陣,并獲得變換矩陣的逆矩陣,再結(jié)合所述密文數(shù)據(jù)解析出明文信息;所述步驟s3中,將解析出的明文信息與所述數(shù)據(jù)接收端接收到的明文信息作比較從而可以判斷出解析出的明文信息是否真實(shí)可信,若在數(shù)據(jù)解密后,數(shù)據(jù)接收端收到的明文信息與解析出的明文信息一致,說明收到的明文數(shù)據(jù)是真實(shí)的,如此可以有效檢測出數(shù)據(jù)傳輸過程中數(shù)據(jù)沒有被篡改,從而保證了數(shù)據(jù)的真實(shí)性。
2.本發(fā)明所述一種基于矩陣運(yùn)算的加密解密方法,所述數(shù)據(jù)傳送端與所述數(shù)據(jù)接收端需構(gòu)建一個相同的基矩陣,所述基矩陣是數(shù)據(jù)傳送端與數(shù)據(jù)接收端約定的矩陣,從而有利于數(shù)據(jù)接收端的解密,有效保證了基矩陣的安全性,避免了數(shù)據(jù)在傳輸過程中可能發(fā)生的泄露問題,同時有效地克服了其在傳輸過程中可能會遭到惡意篡改的問題;所述基矩陣是可逆矩陣,可以保證所述基矩陣轉(zhuǎn)變成變換矩陣后,所述變換矩陣也是可逆矩陣,從而有利于數(shù)據(jù)接收端根據(jù)所述變換矩陣的逆矩陣和密文數(shù)據(jù)解析出明文。
顯然,上述實(shí)施例僅僅是為清楚地說明所作的舉例,并非對實(shí)施方式的限定。對于所屬領(lǐng)域的普通技術(shù)人員來說,在上述說明的基礎(chǔ)上還可以做出其它不同形式變化或變動。這里無需也無法對所有的實(shí)施方式予以窮舉。而由此所引伸出的顯而易見的變化或變動仍處于本發(fā)明創(chuàng)造的保護(hù)范圍之中。