本發(fā)明涉及信息安全和軟件加密,具體涉及一種字節(jié)碼文件加密部署的方法、裝置、設備及存儲介質。
背景技術:
1、java語言作為一種廣泛使用的編程語言,因其開發(fā)效率高、跨平臺性、穩(wěn)定性,以及可擴展性強等特點而受到全球開發(fā)者的青睞。其“編寫一次,到處運行”的特性使得java成為了大型互聯(lián)網平臺的常見解決方案。java的跨平臺性主要體現(xiàn)在其編譯流程上:java源代碼并非直接編譯為特定操作系統(tǒng)的二進制可執(zhí)行文件,而是編譯為字節(jié)碼文件(即.class文件)。這些字節(jié)碼文件由java虛擬機(java?virtual?machine,簡稱jvm)執(zhí)行。oracle公司作為java語言的主要提供商,為幾乎所有的操作系統(tǒng)提供了相應的jvm,這使得編譯后的字節(jié)碼文件能夠在多種操作系統(tǒng)環(huán)境下運行,進一步強化了java語言的跨平臺優(yōu)勢。
2、盡管java語言在開發(fā)、部署和運行階段都有其獨特的優(yōu)勢,java字節(jié)碼文件容易被反編譯的缺陷卻帶來了顯著的安全隱患。在java項目的開發(fā)階段,開發(fā)人員根據(jù)業(yè)務邏輯編寫java源代碼,并將其編譯為字節(jié)碼文件。通常,多個字節(jié)碼文件會被打包成一個歸檔文件(如jar包)以便于管理和部署。在部署階段,企業(yè)將這些編譯好的字節(jié)碼文件復制到服務器上,由于jvm的普遍存在,服務器操作系統(tǒng)的種類幾乎沒有限制。然而,這些部署在服務器上的字節(jié)碼文件容易被反編譯為原始的java源代碼,進而泄露企業(yè)的核心業(yè)務邏輯。因此,如何有效地加密和保護java字節(jié)碼文件,防止未經授權的訪問和使用,成為亟待解決的問題。
技術實現(xiàn)思路
1、本申請通過提供了一種字節(jié)碼文件加密部署的方法、裝置、設備及存儲介質,旨在解決現(xiàn)有技術中java字節(jié)碼文件容易被反編譯,從而導致企業(yè)核心業(yè)務邏輯可能泄露和被非法使用的技術問題。
2、鑒于上述問題,本申請?zhí)峁┝艘环N字節(jié)碼文件加密部署的方法、裝置、設備及存儲介質。
3、本申請公開的第一個方面,提供了一種字節(jié)碼文件加密部署的方法,該方法包括在目標服務器的java運行環(huán)境目錄下生成秘鑰文件,獲取所述秘鑰文件的創(chuàng)建時間和目標服務器的物理地址,基于所述創(chuàng)建時間和物理地址生成加密密鑰,存儲至所述秘鑰文件,其中,秘鑰文件為32位隨機字符;獲取java源文件,對所述java源文件進行編譯和打包,獲得目標歸檔文件集,其中,目標歸檔文件包括多個字節(jié)碼文件;識別目標歸檔文件集,確定待加密歸檔文件集和非加密歸檔文件集,其中,待加密歸檔文件為涉及預定業(yè)務指標的歸檔文件;基于所述秘鑰文件內的加密密鑰,利用des數(shù)據(jù)加密算法對所述待加密歸檔文件進行對稱加密,得到加密歸檔文件集;將所述非加密歸檔文件集和加密歸檔文件集復制到目標服務器的指定目錄下,得到目標二進制文件集;在目標服務器的指定目錄下執(zhí)行所述目標二進制文件集的數(shù)據(jù)解密,利用定制類加載器將解密成功的歸檔文件和未加密歸檔文件加載至目標服務器的jvm內存中,其中,定制類加載器基于c++語言編寫構建。
4、本申請公開的第二個方面,提供了一種字節(jié)碼文件加密部署的裝置,該裝置包括加密密鑰生成模塊:用于在目標服務器的java運行環(huán)境目錄下生成秘鑰文件,獲取所述秘鑰文件的創(chuàng)建時間和目標服務器的物理地址,基于所述創(chuàng)建時間和物理地址生成加密密鑰,存儲至所述秘鑰文件,其中,秘鑰文件為32位隨機字符;編譯和打包模塊:用于獲取java源文件,對所述java源文件進行編譯和打包,獲得目標歸檔文件集,其中,目標歸檔文件包括多個字節(jié)碼文件;歸檔文件集識別模塊:用于識別目標歸檔文件集,確定待加密歸檔文件集和非加密歸檔文件集,其中,待加密歸檔文件為涉及預定業(yè)務指標的歸檔文件;對稱加密模塊:用于基于所述秘鑰文件內的加密密鑰,利用des數(shù)據(jù)加密算法對所述待加密歸檔文件進行對稱加密,得到加密歸檔文件集;二進制文件集獲得模塊:用于將所述非加密歸檔文件集和加密歸檔文件集復制到目標服務器的指定目錄下,得到目標二進制文件集;數(shù)據(jù)解密模塊:用于在目標服務器的指定目錄下執(zhí)行所述目標二進制文件集的數(shù)據(jù)解密,利用定制類加載器將解密成功的歸檔文件和未加密歸檔文件加載至目標服務器的jvm內存中,其中,定制類加載器基于c++語言編寫構建。
5、第三方面,本申請還提供了一種電子設備,包括:存儲器,用于存儲可執(zhí)行指令;處理器,用于執(zhí)行所述存儲器中存儲的可執(zhí)行指令時,實現(xiàn)本申請?zhí)峁┑囊环N字節(jié)碼文件加密部署的方法。
6、第四方面,本申請還提供了一種計算機可讀存儲介質,存儲有計算機程序,該程序被處理器執(zhí)行時,實現(xiàn)本申請?zhí)峁┑囊环N字節(jié)碼文件加密部署的方法。
7、本申請中提供的一個或多個技術方案,至少具有如下技術效果或優(yōu)點:
8、由于采用了在目標服務器的java運行環(huán)境目錄下生成秘鑰文件,并基于該秘鑰文件的創(chuàng)建時間和目標服務器的物理地址生成加密密鑰的技術方案,解決了傳統(tǒng)方法中加密密鑰可能被重用和泄露的問題,確保每個服務器上的加密密鑰都是獨特的。通過這種方法,生成的加密密鑰與特定服務器環(huán)境緊密綁定,達到增強java字節(jié)碼文件安全性的技術效果。此方案有效地防止了未授權的訪問和使用,使應用程序在不同服務器上部署時具備高度的安全性和完整性,保護了企業(yè)的核心業(yè)務邏輯和敏感信息。
9、上述說明僅是本申請技術方案的概述,為了能夠更清楚了解本申請的技術手段,而可依照說明書的內容予以實施,并且為了讓本申請的上述和其它目的、特征和優(yōu)點能夠更明顯易懂,以下特舉本申請的具體實施方式。
1.一種字節(jié)碼文件加密部署的方法,其特征在于,包括:
2.根據(jù)權利要求1所述一種字節(jié)碼文件加密部署的方法,其特征在于,生成加密密鑰,包括:
3.根據(jù)權利要求1所述一種字節(jié)碼文件加密部署的方法,其特征在于,確定待加密歸檔文件集和非加密歸檔文件集,包括:
4.根據(jù)權利要求1所述一種字節(jié)碼文件加密部署的方法,其特征在于,利用定制類加載器將解密成功的歸檔文件和未加密歸檔文件加載至目標服務器的jvm內存中,包括:
5.根據(jù)權利要求4所述一種字節(jié)碼文件加密部署的方法,其特征在于,若目標二進制文件為未加密歸檔文件,利用定制類加載器,按照所述原始加載方式將未加密歸檔文件加載至目標服務器的jvm內存中。
6.根據(jù)權利要求4所述一種字節(jié)碼文件加密部署的方法,其特征在于,對加密歸檔文件進行數(shù)據(jù)解密,包括:
7.一種字節(jié)碼文件加密部署的裝置,其特征在于,用以執(zhí)行權利要求1至6任一所述方法,所述裝置包括:
8.一種電子設備,包括存儲器和處理器,所述存儲器存儲有計算機程序,其特征在于,所述處理器執(zhí)行所述計算機程序時實現(xiàn)權利要求1至6中任一項所述方法的步驟。
9.一種存儲介質,其上存儲有計算機程序,其特征在于,所述計算機程序被處理器執(zhí)行時實現(xiàn)權利要求1至6中任一項所述方法的步驟。