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