可執行程序數據包加密/解密方法及裝置的制造方法
【專利摘要】一種可執行程序數據包加密/解密方法及裝置,所述方法包括:獲取可執行程序數據包;基于預設規則將所述可執行程序數據包拆分成若干個原始文件;分別利用第一密鑰對所述若干個原始文件進行加密得到分別與各個原始文件一一對應的加密文件;接收所述加密后的若干個加密文件;分別利用與所述第一密鑰對應的第二密鑰對所述若干個加密文件進行解密,得到與所述加密文件一一對應的所述若干個原始文件;分別利用所述原始文件的索引信息重組所述若干個原始文件,得到所述可執行程序數據包。能夠防止因為可執行程序數據包中的單個密鑰被竊取后而導致的可執行程序數據包遭到惡意破解。減小應用程序遭惡意破解的概率,提高應用程序數據安全性。
【專利說明】
可執行程序數據包加密/解密方法及裝置
技術領域
[0001]本發明涉及數據安全領域,具體涉及到一種可執行程序數據包加密/解密方法及裝置。【背景技術】[00〇2]隨著智能終端技術的發展,現有技術中,存在了多種操作系統,例如Android系統為當前應用較為廣泛的一種智能終端操作系統。隨著An droid手機操作系統市場占有率的不斷增長,Android系統的應用軟件數量也以相當迅猛的速度增加。
[0003]由于Andr 0 i d系統源碼的開放的特性,使得Andr 0 i d系統流行的同時也為惡意應用軟件提供了便利。譬如,在用戶完全不知情的情況下,惡意軟件有著資費消耗、隨意扣費、隱私竊取等不良行為,而這種行為嚴重的令用戶利益受到損害。通常采用Java編程語言來開發Android系統的應用軟件,由于Java代碼經過編譯后的二進制代碼容易被破解和反編譯, 從而導致Android系統中的應用程序容易被惡意破解。開發者含辛茹苦開發出的軟件面臨著非法篡改、惡意代碼植入等威脅。
[0004]現有技術中,只是通過簡單的數據混淆或對一整個文件進行加密,這樣的加密方式很容易被破解,不能有效的減小應用程序遭惡意破解。
[0005]如何減小應用程序遭惡意破解的概率,提高應用程序數據安全性成為亟待解決的問題。
【發明內容】
[0006]本發明要解決的問題在于如何減小應用程序遭惡意破解的概率。[〇〇〇7]為此本發明提供了一種可執行程序數據包加密/解密方法,包括如下步驟:
[0008]獲取可執行程序數據包;基于預設規則將可執行程序數據包拆分成若干個原始文件;分別利用第一密鑰對若干個原始文件中的各個原始文件進行加密得到分別與各個原始文件-----對應的加密文件,加密文件包括用于索引與其對應的原始文件的索引信息;接收加密后的若干個加密文件,加密文件包括用于索引與其對應的原始文件的索引信息;分別利用與第一密鑰對應的第二密鑰對若干個加密文件進行解密,得到與加密文件---對應的若干個原始文件;分別利用原始文件的索引信息重組若干個原始文件,得到可執行程序數據包。
[0009]優選地,分別利用第一密鑰對若干個原始文件中的各個原始文件進行加密得到分別與各個原始文件--對應的加密文件之后,還包括:分別生成與若干加密文件中各個加密文件一一對應的第一校驗碼,第一校驗碼用于表征與該第一校驗碼對應的加密文件是否完整。在接收加密后的若干個加密文件和分別利用與第一密鑰對應的第二密鑰對若干個加密文件進行解密之間還包括:分別利用各個第一校驗碼判斷各自對應的加密文件是否完整;如果若干加密文件均完整,則利用與第一密鑰對應的第二密鑰對若干個加密文件進行解密。
[0010]優選地,在分別利用原始文件的索引信息重組若干個原始文件,得到可執行程序數據包之后,還包括:調用預設函數解析得到的可執行程序數據包;利用自定義類加載器對解析后的可執行程序數據包進行類加載。
[0011]優選地,在分別利用原始文件的索引信息重組若干個原始文件,得到可執行程序數據包之后,還包括:獲取程序安裝包文件,程序安裝包文件包括重組后的可執行程序數據包;生成程序安裝包文件的第二校驗碼,第二校驗碼用于表征程序安裝包文件是否完整;利用第二校驗碼校驗程序安裝包文件得到程序安裝包文件是否完整的校驗結果;根據校驗結果執行相應的操作。
[0012]優選地,在獲取可執行程序數據包之后,還包括:對獲取的可執行程序數據包中的數據進行隨機變換得到隨機變換后的可執行程序數據包;基于預設規則將可執行程序數據包拆分成若干個原始文件包括:基于預設規則將隨機變換后的可執行程序數據包拆分成若干個原始文件;在分別利用原始文件的索引信息重組若干個原始文件,得到可執行程序數據包之后,還包括:對可執行程序數據包中的數據進行與隨機變換相對應的逆運算,得到隨機變換前的可執行程序數據包。[0013 ]本發明還提供了一種可執行程序數據包加密/解密裝置,包括:
[0014]第一獲取單元,用于獲取可執行程序數據包;拆分單元,用于基于預設規則將可執行程序數據報拆分成若干個原始文件;加密單元,用于分別利用第一密鑰對若干個原始文件中的各個原始文件進行加密得到分別與各個原始文件對應的加密文件;接收單元,用于接收加密后的若干個加密文件;解密單元,用于分別利用第一密鑰對應的第二密匙對若干個加密文件進行解密;重組單元,用于分別利用原始文件的索引信息將若干個原始文件重組。
[0015]優選地,可執行程序數據包加密/解密裝置,還包括:第一校驗碼生成單元,用于分別生成與若干加密文件各加密文件---對應的第一文件校驗碼;第一校驗單元,用于分別利用第一文件完整行校驗碼校驗若干加密文件。
[0016]優選地,可執行程序數據包加密/解密裝置,還包括:解析單元,用于調用預設函數解析得到可執行程序數據包;類加載單元,用于利用自定義類加載器對可執行程序數據包進行類加載。優選地,可執行程序數據包加密/解密裝置,還包括:第二獲取單元,用于獲取程序安裝包文件;第二校驗碼生成單元,用于生成程序安裝包文件的第二校驗碼;第二校驗單元,用于利用第二文件校驗碼校驗程序安裝包文件得到程序安裝包文件是否完整的校驗結果。[〇〇17]優選地,可執行程序數據包加密/解密裝置,還包括:數據隨機變換單元,用于對獲取的可執行程序數據包中的數據進行隨機變換得到隨機變換后的可執行程序數據包;數據隨機逆變換單元,對可執行程序數據包中的數據進行與隨機變換相對應的逆運算,得到隨機變換前的可執行程序數據包。
[0018]本發明實施例提供的可執行程序數據包加密/解密方法及裝置,通過對可執行程序數據包拆分成若干個原始文件,并分別對這些原始文件進行加密,得到與這些原始文件--對應的加密后的文件;由于將可執行程序數據包拆分成多個原始文件并分別加密,而后分別解密各個文件,根據各個文件的索引信息可以重組得到原可執行程序數據包,從而, 能夠防止因為可執行程序數據包中的單個密鑰被竊取后而導致的可執行程序數據包遭到惡意破解,繼而,減小應用程序遭惡意破解的概率,提高應用程序數據安全性。能有效的確保可執行數據包的機密性,從而能夠減小有效的防止應用程序被篡改和被竊取源代碼的概率,大大提高了應用程序的破解難度。
[0019]作為優選的技術方案,生成用于校驗程序安裝包文件是否完整的第二校驗碼,利用第二校驗碼校驗程序安裝包文件得到程序安裝包是否完整的校驗結果,并根據校驗結果做出相應的操作。這樣能準確發現被篡改的程序安裝包文件,從而有效的隔離被篡改的應用軟件,防止被篡改的應用程序繼續使用服務器端提供服務。【附圖說明】
[0020]為了更清楚地說明本發明【具體實施方式】或現有技術中的技術方案,下面將對【具體實施方式】或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施方式,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0021]圖1示出了本發明實施例1的可執行程序數據包加密/解密方法流程示意圖;
[0022]圖2示出了本發明實施例2的用可執行程序數據包加密/解密裝置示意圖。【具體實施方式】
[0023]下面將結合附圖對本發明的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。 [〇〇24] 實施例1
[0025]本實施了公開了一種可執行程序數據包加密/解密方法,如圖1所示,該方法包括如下步驟:[〇〇26]在對可執行程序數據包加密時:[〇〇27]S1.獲取可執行程序數據包。在本實施例中,可執行程序數據包可以是Android平臺上的可執行文件。在具體的實施例中,可以利用加密工具獲取可執行程序數據包。
[0028]S2.基于預設規則將可執行程序數據包拆分成若干個原始文件。在具體的實施例中,可以預設將數據隨機變換后的可執行程序數據包分成多個文件,例如可以等分成8個二進制文件,這里所稱的拆分數量是舉例說明,其他更多或更少的數量都是可行的。在對數據隨機變化后的可執行程序數據包拆分時,拆分規則可以是多種,例如可以等分,可以不等分。
[0029]S3.分別利用第一密鑰對若干個原始文件中的各個原始文件進行加密得到分別與各個原始文件--對應的加密文件。加密文件包括用于索引與其對應的原始文件的索引信息。在具體的實施例中,對隨機變換后的可執行程序數據包拆分后得到的若干個原始文件分別生成隨機密鑰,例如可以利用AES(Advanced Encrypt1n Standard高級加密標準)加密算法拆分得到的若干個原始文件生成隨機密鑰。
[0030]在解密得到加密前的可執行程序數據包加密時:
[0031]S4.接收加密后的若干加密文件。加密文件包括用于索引與其對應的原始文件的索引信息,具體的,在接收所有加密文件的同時,也將各個加密文件的索引信息同時接收。
[0032]S5.分別利用與第一密鑰對應的第二密鑰對若干個加密文件進行解密,得到與加密文件一一對應的若干個原始文件。通過調用解密庫利用與第一密鑰對應的第二密鑰分別對所有的加密文件一一進行解密。在具體的實施例中,每一個第二密鑰都對應著相對應的第一密鑰,第二密鑰是第一密鑰的逆運算,利用加密算法生成第一密鑰,將若干原始文件加密,再利用第一密匙的逆運算生成第二密匙,為加密文件進行解密。
[0033]S6.分別利用原始文件的索引信息重組若干個原始文件,得到可執行程序數據包。 在具體的實施例中,可以利用加密文件中的標識信息,即在將可執行程序數據包拆分為若干個原始文件時存入拆分后的各個原始文件的位置信息,在將各個原始文件重組時,利用各個原始文件的位置信息,將各個原始文件重組在一起得到可執行可執行程序數據包。
[0034]通過對可執行程序數據包拆分成若干個原始文件,分別對這些原始文件進行加密,得到與這些原始文件對應的加密后的文件;由于將可執行程序數據包拆分成多個原始文件并分別加密,而后分別解密各個文件,根據各個文件的索引信息可以重組得到原可執行程序數據包,從而,能夠防止因為可執行程序數據包中的單個密鑰被竊取后而導致的可執行程序數據包遭到惡意破解,繼而,減小應用程序遭惡意破解的概率,提高應用程序數據安全性。能有效的確保可執行數據包的機密性,從而能夠減小應用程序被篡改和被竊取源代碼的概率,大大提高了應用程序的破解難度。
[0035]為了進一步提高可執行程序數據包的機密性,在優選的實施例中,在執行步驟S1 之后,還包括如下步驟:
[0036]S7.對獲取的可執行程序數據包中的數據進行隨機變換得到隨機變換后的可執行程序數據包。在獲取可執行程序數據包后,對可執行數據包中的數據進行隨機變換,經過隨機變換處理后可執行程序數據包可以是由標準格式的可執行文件變換為普通的二進制文件。通過數據隨機變換可以將原文件中的各種元素變換成難于閱讀和理解的數據形式,例如,可以將變量或函數變換成無意義簡短的數據組合。這樣可以在程序被破解或反編譯后增大其閱讀難度,對可執行程序數據包中的數據具有一定的保護性。在執行步驟S2時,基于預設規則將可執行的程序數據包拆分成若干原始文件中基于預設規則拆分的是數據隨機變換后的可執行程序數據包。
[0037]在對若干個原始文件加密后得到的加密文件,為保證每一個加密文件都是完整的,在優選的實施例中在執行步驟S3后,還可以包括如下步驟:
[0038]S8.分別生成與若干加密文件中各個加密文件一一對應的第一校驗碼。第一校驗碼用于表征與該第一校驗碼對應的加密文件是否完整。在拆分的文件進行加密后為保證分塊加密的文件的完整性,要對分塊加密文件生成完整性校驗碼,例如可以通過利用完整性哈希算法計算文件的完整性哈希值,或通過CRC(循環冗余校驗碼)算法計算文件的校驗碼。 所有加密文件都有一一對應的校驗碼,用于校驗所有的分塊的加密文件是否完整。
[0039]在具體的實施例中,上述S3步驟中的加密文件包括用于索引與其對應的原始文件的索引信息,具體的,原始文件的索引信息可以包括:用于標識可執行程序數據包在拆分時的拆分的位置的標識信息,即所有拆分后的文件都含有位置信息,以便在重組的時候能不出錯的組成拆分前的文件,在具體的實施例中加密文件的標識信息可以是一個隨機數;拆分后的文件的數據部分;用于校驗各個加密文件是否完整的校驗碼。
[0040]在生成校驗碼之后,執行步驟S4時,獲取的若干加密文件中的各個文件均包含有校驗碼、標識信息和數據部分等,為保證將要被解密的加密文件都是完整的,在優選的實施例中,執行步驟S5對其解密之前,還可以包括如下步驟:
[0041]S9.分別利用各個第一校驗碼判斷與其對應的加密文件是否完整。在具體的實施例中,同時獲取各個加密文件的第一校驗碼和數據部分,調用完整性校驗數據庫利用加密文件的數據部分再次生成加密文件數據部分的校驗碼,校驗碼的生成方法例如可以是通過利用完整性哈希算法計算加密文件數據部分的完整性哈希值,或通過CRC(循環冗余校驗碼)算法計算加密文件數據部分的校驗碼,再一一驗證各個加密文件數據部分的校驗碼與各個第一校驗碼是否相同,如果數據部分的校驗碼和第一校驗碼相同,則執行步驟S10。
[0042]S10.判斷是否存在未校驗的加密文件。如果存在未校驗的加密文件,則執行步驟 S9,如果不存在未校驗的加密文件,即直到所有的加密文件校驗完成后,并且在確保所有的文件都是完整的之后進入步驟S5。[〇〇43]在優選的實施例中,在步驟S5利用原始文件的索引信息重組若干個原始文件,得到重組后的可執行程序數據包后,還可以包括如下步驟:
[0044]S11.調用預設函數解析得到的可執行程序數據包。在具體的實施例中,可以通過 hook在系統文件中的動態庫,例如libdvm.數據獲取固定的函數例,如函數“opeenDexFile ()”,調用該函數,其中函數的參數為重組后的可執行程序數據包中的數據,通過hook技術到動態庫的固定的函數需要dlopen打開動態庫文件,再通過slsym()獲取固定函數指針,即可調用該固定函數。函數調用完成后,例如android虛擬機或手機就可以解析重組后的可執行程序數據。
[0045]S12.利用自定義類加載器對解析后的可執行程序數據包進行類加載。在具體的實施例中,首先,自定義生成類加載器,例如可以生成DynamicDexClassLoder類加載器,調用類加載器中的例如defineClassO函數,將可執行程序數據包對應的類加載。
[0046]在對可執行程序進行加解密/解密,保證了可執行程序數據包的是安全的,為了進一步保證應用程序的數據安全,在優選的實施例中,還可以進一步對安裝程序包中的文件進行數據安全監測,可執行程序數據包加密/解密方法還可以包括如下步驟:
[0047]S13.獲取程序安裝包文件。在具體的實施例中,程序安裝包文件可以包括重組后的可執行程序數據包、資源目錄、libs目錄和AndroidManifest.xml等所有的應用程序所需要的文件。在對可執行程序進行加解密/解密,保證了可執行程序數據包的是安全的,為了進一步保證應用程序的數據安全,在優選的實施例中,還可以進一步對安裝程序包中的文件進行數據安全監測,
[0048]S14.生成程序安裝包文件的第二校驗碼。在獲取安裝程序包中的文件后,分別對程序安裝包中的各個文件生成與各個文件一一對應的第二校驗碼,例如可以通過利用完整性哈希算法計算文件的完整性哈希值,或通過CRC (循環冗余校驗碼)算法計算文件的校驗碼。所有程序安裝包中的文件都有與之一一對應的第二校驗碼,用于校驗所有程序安裝包文件是否完整。優選地,在生成與程序安裝包中的各個文件一一對應的第二校驗碼后,可以利用第二校驗碼生成校驗數據庫,并將生成的第二校驗碼在相應的文件中進行隨機插粧, 以便運行程序時可以不確定時機的校驗各個文件的完整性。
[0049]S15.利用第二校驗碼校驗所述程序安裝包文件得到所述程序安裝包文件是否完整的校驗結果;根據所述校驗結果執行相應的操作。在具體的實施例中,由于上述步驟S14中將第二校驗碼隨機在相應的文件中隨機插粧,程序在運行過程中會執行到第二校驗碼的插粧代碼,再通調用底層的文件校驗數據庫計算運行中的文件的完整行校驗碼,與本地保存的文件的完整性校驗碼進行比較,判斷二者是否相同,當比較結果相同時,則說明可以正常運行程序安裝包文件。當比較結果不同時,則說明鎖定該程序安裝包文件,終止運行該程序安裝包文件。,優選地,還可以進一步輸出程序被篡改的提示信息。為保證校驗結果的正確性,優選的,在本地校驗完成后,還可以通過反射調用Java層代碼進行遠程校驗,具體的, 將文件完整性校驗碼、應用程序的來源信息、用戶信息等請求參數發送至服務器端。服務器端接收到這些請求參數后,比較客戶端傳遞的完整性校驗碼與服務器端保存的完整性校驗碼是否相同,當比較結果相同時,正常響應客戶端下一次請求。當比較結果不同時,則對該客戶端其他API請求(認證權)進行封堵,防止被篡改的應用程序繼續使用服務器提供服務。
[0050]對校驗程序安裝包文件的完整性進行校驗能準確發現被篡改的程序安裝包文件, 從而有效的隔離被篡改的應用軟件,防止被篡改的應用程序繼續使用服務器端提供服務。 [〇〇51 ] 實施例2
[0052]本實施例提供了一種可執行程序數據包加密/解密裝置。如圖2所示,該可執行程序數據包加密/解密裝置包括:第一獲取單元111、拆分單元112、加密單元113、接收單元 114、解密單元115和重組單元116其中,
[0053]第一獲取單元111用于獲取可執行程序數據包;
[0054]拆分單元112,用于基于預設規則將可執行程序數據報拆分成若干個原始文件;
[0055]加密單元113,用于分別利用第一密鑰對若干個原始文件中的各個原始文件進行加密得到分別與各個原始文件---對應的加密文件;
[0056]接收單元114,用于接收加密后的若干個加密文件;
[0057]解密單元115,用于分別利用第一密鑰對應的第二密匙對若干個加密文件進行解密;
[0058]重組單元116,用于分別利用原始文件的索引信息將若干個原始文件重組。根據可執行程序數據包加密/解密裝置,通過獲取單元獲取可執行程序數據包,再通過拆分單元將可執行程序數據包拆分加密單元對拆分后文件進行加密,解密單元對加密文件解密,重組單元重組解密后的文件,這樣就能夠有效地確保可執行程序數據包的完整性與機密性,使應用程序被破解或被篡改的困難大大增加。
[0059]在優選的實施例中,該可執行程序數據包加密/解密裝置還可以包括:
[0060] 第一校驗碼生成單元,用于分別生成與若干加密文件各加密文件-對應的第一文件校驗碼;
[0061]第一校驗單元,用于分別利用第一文件完整行校驗碼校驗若干加密文件。
[0062]在優選的實施例中,該可執行程序數據包加密/解密裝置還可以包括:
[0063]解析單元,用于調用預設函數解析得到可執行程序數據包;
[0064]類加載單元,用于利用自定義類加載器對可執行程序數據包進行類加載。
[0065]在優選的實施例中,該可執行程序數據包加密/解密裝置還可以包括:
[0066]第二獲取單元,用于獲取程序安裝包文件;
[0067]第二校驗碼生成單元,用于生成程序安裝包文件的第二校驗碼;
[0068]第二校驗單元,用于利用第二文件校驗碼校驗程序安裝包文件得到程序安裝包文件是否完整的校驗結果。
[0069]在優選的實施例中,該可執行程序數據包加密/解密裝置還可以包括:
[0070]數據隨機變換單元,用于對獲取的可執行程序數據包中的數據進行隨機變換得到隨機變換后的可執行程序數據包;
[0071]逆數據隨機變換單元,對可執行程序數據包中的數據進行與隨機變換相對應的逆運算,得到隨機變換前的可執行程序數據包。
[0072]本領域內的技術人員還應理解,本發明的實施例可提供為方法、系統、或計算機程序產品。因此,本發明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產品的形式。
[0073]本發明是參照根據本發明實施例的方法、設備(系統)、和計算機程序產品的流程圖和/或方框圖來描述的,應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0074]這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0075]這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0076]雖然結合附圖描述了本發明的實施方式,但是本領域技術人員可以在不脫離本發明的精神和范圍的情況下作出各種修改和變型,這樣的修改和變型均落入由所附權利要求所限定的范圍之內。
【主權項】
1.一種可執行程序數據包加密/解密方法,其特征在于,包括如下步驟:獲取可執行程序數據包;基于預設規則將所述可執行程序數據包拆分成若干個原始文件;分別利用第一密鑰對所述若干個原始文件中的各個原始文件進行加密得到分別與各 個原始文件—對應的加密文件,所述加密文件包括用于索引與其對應的原始文件的索引 信息;接收所述加密后的若干個加密文件,所述加密文件包括用于索引與其對應的原始文件 的索引彳目息;分別利用與所述第一密鑰對應的第二密鑰對所述若干個加密文件進行解密,得到與所 述加密文件—對應的所述若干個原始文件;分別利用所述原始文件的索引信息重組所述若干個原始文件,得到所述可執行程序數 據包。2.根據權利要求1所述的可執行程序數據包加密/解密方法,其特征在于,所述分別利 用第一密鑰對所述若干個原始文件中的各個原始文件進行加密得到分別與各個原始文件 ---對應的加密文件之后,還包括:分別生成與所述若干加密文件中各個加密文件一一對應的第一校驗碼,所述第一校驗 碼用于表征與該第一校驗碼對應的加密文件是否完整;在所述接收加密后的若干個加密文件和所述分別利用與所述第一密鑰對應的第二密 鑰對所述若干個加密文件進行解密之間還包括:分別利用各個所述第一校驗碼判斷各自對應的加密文件是否完整;如果所述若干加密文件均完整,則利用與所述第一密鑰對應的第二密鑰對所述若干個 加密文件進行解密。3.根據權利要求1或2所述的可執行程序數據包加密/解密方法,其特征在于,在所述分 別利用所述原始文件的索引信息重組所述若干個原始文件,得到所述可執行程序數據包之 后,還包括:調用預設函數解析得到的所述可執行程序數據包;利用自定義類加載器對解析后的所述可執行程序數據包進行類加載。4.根據權利要求1所述的可執行程序數據包加密/解密方法,其特征在于,在所述分別 利用所述原始文件的索引信息重組所述若干個原始文件,得到所述可執行程序數據包之 后,還包括:獲取程序安裝包文件,所述程序安裝包文件包括重組后的所述可執行程序數據包;生成所述程序安裝包文件的第二校驗碼,所述第二校驗碼用于表征所述程序安裝包文 件是否完整;利用第二校驗碼校驗所述程序安裝包文件得到所述程序安裝包文件是否完整的校驗 結果;根據所述校驗結果執行相應的操作。5.根據權利要求1或2所述的可執行程序數據包加密/解密方法,其特征在于,在所述獲 取可執行程序數據包之后,還包括:對獲取的所述可執行程序數據包中的數據進行隨機變換得到隨機變換后的可執行程序數據包;所述基于預設規則將所述可執行程序數據包拆分成若干個原始文件包括:基于預設規 則將所述隨機變換后的可執行程序數據包拆分成若干個原始文件;在所述分別利用所述原始文件的索引信息重組所述若干個原始文件,得到所述可執行 程序數據包之后,還包括:對所述可執行程序數據包中的數據進行與所述隨機變換相對應的逆運算,得到隨機變 換前的可執行程序數據包。6.—種可執行程序數據包加密/解密裝置,其特征在于,包括:第一獲取單元,用于獲取可執行程序數據包;拆分單元,用于基于預設規則將所述可執行程序數據報拆分成若干個原始文件;加密單元,用于分別利用第一密鑰對所述若干個原始文件中的各個原始文件進行加密得到分別與各個原始文件 對應的加密文件;接收單元,用于接收所述加密后的若干個加密文件;解密單元,用于分別利用所述第一密鑰對應的第二密匙對所述若干個加密文件進行解 密;重組單元,用于分別利用所述原始文件的索引信息將所述若干個原始文件重組。7.根據權利要求6所述的可執行程序數據包加密/解密裝置,其特征在于,還包括: 第一校驗碼生成單元,用于分別生成與所述若干加密文件各加密文件 對應的第一文件校驗碼;第一校驗單元,用于分別利用所述第一文件完整行校驗碼校驗所述若干加密文件。8.根據權利要求6或7所述的可執行程序數據包加密/解密裝置,其特征在于,還包括:解析單元,用于調用預設函數解析得到所述可執行程序數據包;類加載單元,用于利用自定義類加載器對所述可執行程序數據包進行類加載。9.根據權利要求6所述的可執行程序數據包加密/解密裝置,其特征在于,還包括: 第二獲取單元,用于獲取程序安裝包文件;第二校驗碼生成單元,用于生成所述程序安裝包文件的第二校驗碼;第二校驗單元,用于利用第二文件校驗碼校驗程序安裝包文件得到所述程序安裝包文 件是否完整的校驗結果。10.根據權利要求6或7所述的可執行程序數據包加密/解密裝置,其特征在于,還包括: 數據隨機變換單元,用于對獲取的所述可執行程序數據包中的數據進行隨機變換得到隨機變換后的可執行程序數據包;數據隨機逆變換單元,對所述可執行程序數據包中的數據進行與所述隨機變換相對應 的逆運算,得到隨機變換前的可執行程序數據包。
【文檔編號】G06F21/64GK106055936SQ201610334722
【公開日】2016年10月26日
【申請日】2016年5月18日
【發明人】蔡樹彬, 明仲, 黃榮杰
【申請人】深圳大學