[發(fā)明專利]一種Java應(yīng)用程序加密方法及裝置在審
| 申請(qǐng)?zhí)枺?/td> | 201811494590.2 | 申請(qǐng)日: | 2018-12-07 |
| 公開(kāi)(公告)號(hào): | CN111291333A | 公開(kāi)(公告)日: | 2020-06-16 |
| 發(fā)明(設(shè)計(jì))人: | 楊曉錦;孫寧;喬陽(yáng) | 申請(qǐng)(專利權(quán))人: | 中國(guó)移動(dòng)通信集團(tuán)陜西有限公司;中國(guó)移動(dòng)通信集團(tuán)有限公司 |
| 主分類號(hào): | G06F21/14 | 分類號(hào): | G06F21/14;G06F21/53;G06F21/60 |
| 代理公司: | 北京同達(dá)信恒知識(shí)產(chǎn)權(quán)代理有限公司 11291 | 代理人: | 郭潤(rùn)湘 |
| 地址: | 710075*** | 國(guó)省代碼: | 陜西;61 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 java 應(yīng)用程序 加密 方法 裝置 | ||
本申請(qǐng)公開(kāi)了一種Java應(yīng)用程序加密方法及裝置,應(yīng)用于電子技術(shù)領(lǐng)域。該方法包括:確定待加密的Java應(yīng)用程序的常量池中的第一Tag值序列,對(duì)所述第一Tag值序列中的Tag值進(jìn)行重新排序得到Tag值排序不同的多個(gè)第二Tag值序列;將所述多個(gè)第二Tag值序列替換所述第一Tag值序列,形成加密的Java應(yīng)用程序。本申請(qǐng)?zhí)峁┑姆椒ê脱b置解決現(xiàn)有技術(shù)中Java應(yīng)用程序安全性差,重要算法和數(shù)據(jù)存在泄漏的技術(shù)問(wèn)題。
技術(shù)領(lǐng)域
本申請(qǐng)涉及電子技術(shù)領(lǐng)域,尤其涉及一種Java應(yīng)用程序加密方法及裝置。
背景技術(shù)
Java是Sun公司推出的能夠跨越多平臺(tái)、可移植性最高的一種面向?qū)ο蟮木幊陶Z(yǔ)言,也是截至目前應(yīng)用最廣、特征最豐富、功能最強(qiáng)大的計(jì)算機(jī)語(yǔ)言。利用Java可以編寫基于不同平臺(tái),不同系統(tǒng)的各式應(yīng)用程序,從而使其成為應(yīng)用范圍最廣泛的開(kāi)發(fā)語(yǔ)言,特別是在虛擬機(jī)程序開(kāi)發(fā)方面。
Java開(kāi)發(fā)技術(shù)在虛擬機(jī)層面隱藏了底層技術(shù)的復(fù)雜性以及機(jī)器與操作系統(tǒng)的特性,運(yùn)行程序的物理機(jī)器環(huán)境各不相同,而Java虛擬機(jī)則在不同運(yùn)行環(huán)境上面建立了統(tǒng)一的運(yùn)行平臺(tái),實(shí)現(xiàn)了在任意一臺(tái)虛擬機(jī)上編譯的程序都能在其他虛擬機(jī)上運(yùn)行。這一靈活性的編譯特性的關(guān)鍵在于,Java編譯器的輸出不是可執(zhí)行代碼,而是字節(jié)碼。字節(jié)碼是高度優(yōu)化的指令集合,這些指令由Java運(yùn)行時(shí)系統(tǒng)(通常所謂的虛擬機(jī))執(zhí)行。由于字節(jié)碼文件不是真正的二進(jìn)制文件,而是一種符合Java虛擬機(jī)規(guī)范格式的中間代碼,其中保留了大量Java應(yīng)用程序的信息,這給反編譯提供了條件和基礎(chǔ)?;贘ava程序中中間代碼的特性,反編譯出的代碼具有很高的可讀性和邏輯性,所以導(dǎo)致現(xiàn)有Java應(yīng)用程序安全性差,重要算法和數(shù)據(jù)存在泄漏,毫無(wú)保密性可言的技術(shù)問(wèn)題。
發(fā)明內(nèi)容
本申請(qǐng)?zhí)峁┮环NJava應(yīng)用程序加密方法及裝置,用以解決現(xiàn)有技術(shù)中Java應(yīng)用程序安全性差,重要算法和數(shù)據(jù)存在泄漏的技術(shù)問(wèn)題。
第一方面,本申請(qǐng)實(shí)施例提供一種Java應(yīng)用程序加密方法,包括:
確定待加密的Java應(yīng)用程序的常量池中的第一Tag值序列,對(duì)所述第一Tag值序列中的Tag值進(jìn)行重新排序得到Tag值排序不同的多個(gè)第二Tag值序列;
將所述多個(gè)第二Tag值序列替換所述第一Tag值序列,形成加密的Java應(yīng)用程序。
本申請(qǐng)實(shí)施例所提供的方法,根據(jù)Java字節(jié)碼的特點(diǎn),對(duì)常量池的修改達(dá)到干擾其余集合數(shù)據(jù)的目的(即實(shí)現(xiàn)對(duì)Java應(yīng)用程序的加密保護(hù))。常量池中的數(shù)據(jù)結(jié)構(gòu)遵循Java虛擬機(jī)規(guī)范,不同的常量Tag值代表不同類型的常量數(shù)據(jù)結(jié)構(gòu),重定義的常量Tag值可以達(dá)到干擾字節(jié)碼文件其余數(shù)據(jù)結(jié)構(gòu)調(diào)用常量的目的,修改后的常量被字節(jié)碼文件中的其余集合調(diào)用后會(huì)出現(xiàn)數(shù)據(jù)格式不符、越界等錯(cuò)誤,具有干擾反編譯的功能。
在一種可選的實(shí)施方式中,該方法還包括:
將所述第一Tag值序列與所述多個(gè)第二Tag值序列的映射關(guān)系寫入授權(quán)文件;使得所述加密的Java應(yīng)用程序在虛擬機(jī)中加載時(shí)從授權(quán)文件中讀取所述映射關(guān)系將多個(gè)第二Tag值序列替換成所述第一Tag值序列。
該實(shí)例中,將字節(jié)碼中原始常量池中Tag值序列中Tag值的順序調(diào)整得到多個(gè)新的Tag值序列,并且保存新Tag值序列與原始Tag值序列之間的映射關(guān)系,在保證非授權(quán)用戶不能反編譯字節(jié)碼的情況下,授權(quán)用戶根據(jù)該映射關(guān)系可以獲得正確的Tag值序列對(duì)字節(jié)碼進(jìn)行正常讀取。
在一種可選的實(shí)施方式中,所述將所述多個(gè)第二Tag值序列替換所述第一Tag值序列包括:
采用高級(jí)加密標(biāo)準(zhǔn)AES對(duì)所述多個(gè)第二Tag值序列進(jìn)行加密;
將加密后的所述多個(gè)第二Tag值序列替換所述第一Tag值序列。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中國(guó)移動(dòng)通信集團(tuán)陜西有限公司;中國(guó)移動(dòng)通信集團(tuán)有限公司,未經(jīng)中國(guó)移動(dòng)通信集團(tuán)陜西有限公司;中國(guó)移動(dòng)通信集團(tuán)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811494590.2/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 同類專利
- 專利分類
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F21-00 防止未授權(quán)行為的保護(hù)計(jì)算機(jī)或計(jì)算機(jī)系統(tǒng)的安全裝置
G06F21-02 .通過(guò)保護(hù)計(jì)算機(jī)的特定內(nèi)部部件
G06F21-04 .通過(guò)保護(hù)特定的外圍設(shè)備,如鍵盤或顯示器
G06F21-06 .通過(guò)感知越權(quán)操作或外圍侵?jǐn)_
G06F21-20 .通過(guò)限制訪問(wèn)計(jì)算機(jī)系統(tǒng)或計(jì)算機(jī)網(wǎng)絡(luò)中的節(jié)點(diǎn)
G06F21-22 .通過(guò)限制訪問(wèn)或處理程序或過(guò)程
- 基于支持類的標(biāo)識(shí)來(lái)下載Java應(yīng)用的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品
- 啟動(dòng)JAVA應(yīng)用的方法及裝置
- Java虛擬機(jī)的管理方法、監(jiān)控系統(tǒng)和監(jiān)控代理模塊
- 一種運(yùn)行Java程序的方法和裝置
- 一種保護(hù)java程序的方法
- Java卡的Java代碼補(bǔ)丁方法
- 一種基于中間件架構(gòu)下java棧的多線程實(shí)現(xiàn)方法
- 一種支持JAVA卡補(bǔ)丁函數(shù)的智能卡
- 一種改進(jìn)的Java卡初始化方法和Java卡
- JavaEE平臺(tái)構(gòu)建方法、JavaEE平臺(tái)及云端系統(tǒng)
- 對(duì)虛擬化應(yīng)用程序的基于策略的訪問(wèn)
- 應(yīng)用程序執(zhí)行、應(yīng)用程序提供裝置和應(yīng)用程序分發(fā)方法
- 一種軟件保護(hù)方法、裝置及系統(tǒng)
- 應(yīng)用程序的開(kāi)發(fā)方法和系統(tǒng)
- 應(yīng)用程序的擴(kuò)展方法及裝置
- 一種應(yīng)用程序商店的應(yīng)用程序發(fā)布方法及裝置
- 一種應(yīng)用程序的監(jiān)控方法、裝置及系統(tǒng)
- 用于對(duì)虛擬化應(yīng)用程序的基于策略的訪問(wèn)的方法和系統(tǒng)
- 應(yīng)用程序控制方法、裝置、終端及存儲(chǔ)介質(zhì)
- 一種應(yīng)用程序安裝、卸載方法及通信終端
- 加密裝置、加密系統(tǒng)、加密方法以及加密程序
- 移動(dòng)終端和方法
- 再加密方法、再加密系統(tǒng)以及再加密裝置
- 加密終端遠(yuǎn)程管理的方法、加密終端及管理器
- 數(shù)據(jù)加密的方法及裝置
- 流媒體數(shù)據(jù)加密、解密方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 加密裝置、加密系統(tǒng)和數(shù)據(jù)的加密方法
- 文件加密、解密方法、裝置、設(shè)備和存儲(chǔ)介質(zhì)
- 一種車聯(lián)網(wǎng)數(shù)據(jù)加密方法及系統(tǒng)
- 一種服務(wù)數(shù)據(jù)共享云平臺(tái)的數(shù)據(jù)加密方法及系統(tǒng)
- 一種數(shù)據(jù)庫(kù)讀寫分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





