0,用于將查詢的所述對內調用函數(shù)轉換為通過Jpype工具調用jar包函數(shù)的形式。
[0125]本發(fā)明實施例提供的一種Python程序模塊的安全調用裝置,與現(xiàn)有技術中的Python代碼存在的被盜用的問題相比,其能夠對Python程序模塊中的核心部分進行加密處理,并通過配置的Jpype工具調用加密后文件,以提高Python代碼的安全性,并且本申請應用到Python編寫的應用程序中時還使得運行環(huán)境變化少、自動化程度高,并且可以跨平臺使用。
[0126]本發(fā)明實施例所提供的進行一種Python程序模塊的安全調用方法的計算機程序產品,包括存儲了程序代碼的計算機可讀存儲介質,所述程序代碼包括的指令可用于執(zhí)行前面方法實施例中所述的方法,具體實現(xiàn)可參見方法實施例,在此不再贅述。
[0127]所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
[0128]在本申請所提供的幾個實施例中,應該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實現(xiàn)。以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,又例如,多個單元或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些通信接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
[0129]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上??梢愿鶕嶋H的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
[0130]另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。
[0131]所述功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產品銷售或使用時,可以存儲在一個計算機可讀取存儲介質中?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分或者該技術方案的部分可以以軟件產品的形式體現(xiàn)出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0132]以上所述,僅為本發(fā)明的【具體實施方式】,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應以所述權利要求的保護范圍為準。
【主權項】
1.一種Python程序模塊的安全調用方法,其特征在于,包括: 獲取待加密的Python程序模塊;其中,所述Python程序模塊運行在安裝有Java運行環(huán)境和Jpype工具的運行環(huán)境中,所述Jpype工具包括加載器; 將所述待加密的Python程序模塊的Python代碼轉換為Jython代碼; 對所述Jython代碼進行加密處理,生成加密文件對應的解密密鑰; 根據所述解密密鑰對所述Jpype工具的加載器進行配置,利用配置后的加載器調用所述加密文件,用以實現(xiàn)對Python程序模塊的安全調用。2.根據權利要求1所述的方法,其特征在于,所述獲取待加密的Python程序模塊包括: 獲取配置文件中的函數(shù)列表和類的列表; 對所述函數(shù)列表和類的列表進行分析,確定待加密的類和待加密函數(shù)以及非加密的類和非加密函數(shù); 將所述待加密的類和待加密函數(shù)作為待加密的Python程序模塊。3.根據權利要求2所述的方法,其特征在于,對所述Jython代碼進行加密處理,生成加密文件對應的解密密鑰之前,還包括: 獲取所述函數(shù)列表和類的列表中的所有調用關系對應的調用函數(shù);其中,所述調用關系涉及的對象包括:函數(shù)和函數(shù)以及類和類; 根據所述調用關系對應的調用函數(shù),確定所述待加密的Python程序模塊中的待混淆函數(shù)信息;其中,所述待混淆函數(shù)信息包括所述待混淆函數(shù)的以下信息中的一種或多種:名稱和待混淆變量; 利用預設混淆函數(shù)信息對所述待混淆函數(shù)信息進行重命名;其中,所述預設混淆函數(shù)信息包括以下信息中的一種或多種:混淆函數(shù)名稱和混淆變量名稱;且所述混淆函數(shù)名稱和所述混淆變量名稱均與Python關鍵字名稱不同。4.根據權利要求2所述的方法,其特征在于,所述對所述Jython代碼進行加密處理,生成加密文件對應的解密密鑰包括: 根據用戶發(fā)送的執(zhí)行命令,將所述Jython代碼封裝成jar包函數(shù); 對所述j ar包函數(shù)進行加密,生成所述j ar包函數(shù)對應的解密密鑰。5.根據權利要求4所述的方法,其特征在于,所述方法還包括: 掃描所有函數(shù)列表和類的列表,獲取所述函數(shù)列表和類的列表中的所有調用關系對應的所述調用函數(shù);其中,所述調用關系涉及的對象包括:函數(shù)和函數(shù)以及類和類; 在所述調用函數(shù)中查詢非加密Python程序模塊調用待加密的Python程序的對內調用函數(shù);其中,所述非加密Python程序模塊包括非加密的類和非加密函數(shù); 將查詢的所述對內調用函數(shù)轉換為通過Jpype工具調用jar包函數(shù)的形式。6.一種Python程序模塊的安全調用裝置,其特征在于,包括: 第一獲取模塊,用于獲取待加密的Python程序模塊;其中,所述Python程序模塊運行在安裝有Java運行環(huán)境和Jpype工具的運行環(huán)境中,所述Jpype工具包括加載器; 第一轉換模塊,用于將所述待加密的Python程序模塊的Python代碼轉換為Jython代碼; 加密模塊,用于對所述Jython代碼進行加密處理,生成加密文件對應的解密密鑰; 配置模塊,用于根據所述解密密鑰對所述Jpype工具的加載器進行配置,利用配置后的加載器調用所述加密文件,用以實現(xiàn)對Python程序模塊的安全調用。7.根據權利要求6所述的裝置,其特征在于,所述第一獲取模塊包括: 獲取子模塊,用于獲取配置文件中的函數(shù)列表和類的列表; 分析子模塊,用于對所述函數(shù)列表和類的列表進行分析,確定待加密的類和待加密函數(shù)以及非加密的類和非加密函數(shù); 設置子模塊,用于將所述待加密的類和待加密函數(shù)作為待加密的Python程序模塊。8.根據權利要求7所述的裝置,其特征在于,所述裝置還包括: 第二獲取模塊,用于獲取所述函數(shù)列表和類的列表中的所有調用關系對應的調用函數(shù);其中,所述調用關系涉及的對象包括:函數(shù)和函數(shù)以及類和類; 確定模塊,用于根據所述調用關系對應的調用函數(shù),確定所述待加密的Python程序模塊中的待混淆函數(shù)信息;其中,所述待混淆函數(shù)信息包括所述待混淆函數(shù)的以下信息中的一種或多種:名稱和待混淆變量; 混淆模塊,用于利用預設混淆函數(shù)信息對所述待混淆函數(shù)信息進行重命名;其中,所述預設混淆函數(shù)信息包括以下信息中的一種或多種:混淆函數(shù)名稱和混淆變量名稱;且所述混淆函數(shù)名稱和所述混淆變量名稱均與Python關鍵字名稱不同。9.根據權利要求7所述的裝置,其特征在于,所述加密模塊包括: 封裝子模塊,用于根據用戶發(fā)送的執(zhí)行命令,將所述Jython代碼封裝成jar包函數(shù); 加密子模塊,用于對所述jar包函數(shù)進行加密,生成所述jar包函數(shù)對應的解密密鑰。10.根據權利要求9所述的裝置,其特征在于,所述裝置還包括: 掃描模塊,用于掃描所有函數(shù)列表和類的列表,獲取所述函數(shù)列表和類的列表中的所有調用關系對應的所述調用函數(shù);其中,所述調用關系涉及的對象包括:函數(shù)和函數(shù)以及類和類; 查詢模塊,用于在所述調用函數(shù)中查詢非加密Python程序模塊調用待加密的Python程序的對內調用函數(shù);其中,所述非加密Python程序模塊包括非加密的類和非加密函數(shù); 第二轉換模塊,用于將查詢的所述對內調用函數(shù)轉換為通過Jpype工具調用jar包函數(shù)的形式。
【專利摘要】本發(fā)明提供了一種Python程序模塊的安全調用方法和裝置,包括:獲取運行在安裝有Java運行環(huán)境和Jpype工具的運行環(huán)境中的待加密的Python程序模塊;將待加密的Python程序模塊的Python代碼轉換為Jython代碼;對Jython代碼進行加密處理,生成加密文件對應的解密密鑰;根據解密密鑰對Jpype工具的加載器進行配置,利用配置后的加載器調用加密文件,以實現(xiàn)對Python程序模塊的安全調用。其能夠對Python程序模塊中的核心部分進行加密處理,并通過配置的Jpype工具調用加密后文件,以提高Python代碼的安全性,并且使得運行環(huán)境變化少、自動化程度高,并且可以跨平臺使用。
【IPC分類】G06F21/12
【公開號】CN105574368
【申請?zhí)枴緾N201510917414
【發(fā)明人】王若宇
【申請人】華青融天(北京)技術股份有限公司
【公開日】2016年5月11日
【申請日】2015年12月10日