flash加密、解密方法以及加密、解密裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別是涉及一種flash加密、解密方法以及加密、解山目-ο
【背景技術(shù)】
[0002]Act1n Script是為flash產(chǎn)品而開發(fā)的面向?qū)ο蟮木幊陶Z言,功能強大、靈活高效,已經(jīng)越來越多地在企業(yè)級應(yīng)用、網(wǎng)絡(luò)游戲中使用,其目前最新的版本為3.0。
[0003]而Act1n Script 編譯的 flash 文件(專用格式為 swf, shock wave flash,支持矢量和點陣圖形的動畫文件格式,flash文件也被稱之為swf文件)卻是安全性比較差的文件。Flash文件中的代碼容易通過逆向工程來獲取,例如通過網(wǎng)絡(luò)下載該flash文件,并進行反編譯,就能破解該flash文件,從而盜用其中的代碼。
[0004]因此,有必要提出一種flash加密方法及裝置,保護flash文件中的代碼。相應(yīng)的,還需配套提出一種flash解密方法及裝置。
【發(fā)明內(nèi)容】
[0005]基于此,有必要提供一種flash加密方法及裝置,以及配套提供一種flash解密方法和裝置,應(yīng)用本發(fā)明所提供的方法和裝置,能夠提高flash文件的安全性。
[0006]一種flash加密方法,所加密的flash文件包括主邏輯文件和用于加載所述主邏輯文件的容器文件,所述方法包括:
[0007]利用密鑰對所述主邏輯文件進行二進制加密運算,得到加密主文件;
[0008]將與所述二進制加密運算對應(yīng)的解密程序保存在所述容器文件中;
[0009]將所述密鑰保存在承載頁面中,所述承載頁面為所述容器文件的承載頁面。
[0010]在其中一個實施例中,所述利用密鑰對所述flash文件中的主邏輯文件進行二進制加密運算,得到加密主文件,包括:
[0011]將所述密鑰與所述主邏輯文件對應(yīng)的二進制碼進行異或運算,得到加密主文件。
[0012]在其中一個實施例中,所述方法還包括:對所述解密程序預(yù)先進行混淆加密處理。
[0013]一種flash解密方法,所解密的flash文件包括加密主文件和用于加載所述加密主文件的容器文件,所述容器文件中還包括解密程序,所述方法包括:
[0014]向承載頁面請求所述容器文件,并獲取保存在所述承載頁面中的密鑰,所述承載頁面為所述容器文件的承載頁面,所述密鑰為對主邏輯文件進行二進制加密運算而得到加密主文件的密鑰;
[0015]通過所述容器文件加載所述加密主文件;
[0016]根據(jù)所述解密程序,利用所述密鑰對所述加密主文件進行二進制解密運算,得到主邏輯文件。
[0017]在其中一個實施例中,所述利用所述密鑰對所述加密主文件進行二進制解密運算,得到主邏輯文件,包括:
[0018]將所述密鑰與所述加密主文件對應(yīng)的二進制碼進行異或運算,得到主邏輯文件。
[0019]一種flash加密裝置,所加密的flash文件包括主邏輯文件和用于加載所述主邏輯文件的容器文件,所述裝置包括:
[0020]密鑰加密單元,用于利用密鑰對所述主邏輯文件進行二進制加密運算,得到加密主文件;
[0021]解密程序?qū)懭雴卧?,用于將與所述二進制加密運算對應(yīng)的解密程序保存在所述容器文件中;
[0022]密鑰保存單元,用于將所述密鑰保存在承載頁面中,所述承載頁面為所述容器文件的承載頁面。
[0023]在其中一個實施例中,所述密鑰加密單元,用于將所述密鑰與所述主邏輯文件對應(yīng)的二進制碼進行異或運算,得到加密主文件。
[0024]在其中一個實施例中,所述裝置還包括混淆加密單元,所述混淆加密單元用于對所述解密程序預(yù)先進行混淆加密處理。
[0025]一種flash解密裝置,所解密的flash文件包括加密主文件和用于加載所述加密主文件的容器文件,所述容器文件中還包括解密程序,所述裝置包括:
[0026]容器文件加載單元,用于向承載頁面請求所述容器文件,并獲取保存在所述承載頁面中的密鑰,所述承載頁面為所述容器文件的承載頁面,所述密鑰為對主邏輯文件進行二進制加密運算而得到加密主文件的密鑰;
[0027]加密主文件加載單元,用于通過所述容器文件加載所述加密主文件;
[0028]解密單元,用于根據(jù)所述解密程序,利用所述密鑰對所述加密主文件進行二進制解密運算,得到主邏輯文件。
[0029]在其中一個實施例中,所述解密單元,用于將所述密鑰與所述加密主文件對應(yīng)的二進制碼進行異或運算,得到主邏輯文件。
[0030]上述flash加密方法和裝置,以及配套的flash解密方法和裝置,在加密時,利用密鑰對主邏輯文件進行二進制加密運算,可有效防止通過網(wǎng)絡(luò)下載主邏輯文件并利用反編譯工具進行破解;在解密時,相應(yīng)根據(jù)容器文件中的解密程序,利用密鑰對加密主文件進行解密,有效地提高了 flash文件的安全性。
【附圖說明】
[0031]圖1為一個實施例中的flash加密方法的流程示意圖;
[0032]圖2為一個實施例中的flash解密方法的流程示意圖;
[0033]圖3為一個實施例中的flash加密裝置的結(jié)構(gòu)示意圖;
[0034]圖4為一個實施例中的flash解密裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0035]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0036]參見圖1,在一個實施例中提供了一種flash加密方法。該方法可以應(yīng)用于諸如企業(yè)級應(yīng)用、網(wǎng)絡(luò)游戲等場景,對企業(yè)即將上線的多媒體視頻、網(wǎng)絡(luò)游戲進行加密,以保護其中的核心代碼。該方法包括:
[0037]步驟102,利用密鑰對主邏輯文件進行二進制加密運算,得到加密主文件。
[0038]具體的,在本實施例中,在企業(yè)級應(yīng)用、網(wǎng)絡(luò)游戲等項目的開發(fā)階段,將程序代碼劃分為核心代碼和加載代碼,核心代碼和加載代碼均為flash程序代碼,可以但不限于通過Act1n Script來編譯完成。編譯后的核心代碼對應(yīng)于主邏輯文件,用于實現(xiàn)flash視頻或游戲中的動作、事件等。加載代碼所對應(yīng)的容器文件存放于一網(wǎng)頁頁面(承載頁面)中,在用戶端瀏覽器訪問該頁面時,由瀏覽器內(nèi)嵌的多媒體播放器如flashplayer,自動觸發(fā)獲取該容器文件,再由容器文件加載主邏輯文件,從而實現(xiàn)視頻播放、網(wǎng)絡(luò)游戲的展示等。
[0039]本實施例所要保護的就是主邏輯文件中的核心代碼。加密原理可以采用二進制異或運算,將加密所用的一定數(shù)位的密鑰與主邏輯文件對應(yīng)的二進制碼進行異或運算,得到加密主文件??梢愿鶕?jù)以上原理編寫加密程序,將密鑰作為加密程序的參數(shù),可以由開發(fā)應(yīng)用或游戲的管理員輸入。加密程序可以使用任意高級編程語言,例如在windows運行環(huán)境中,可以采用C++編譯成exe格式運行程序,通過該exe格式運行程序讀取主邏輯文件,通過異或運算改變主邏輯文件對應(yīng)的二進制值,又例如在Iinux運行環(huán)境中,可以采用shell(命令解析器)腳本語言編寫加密程序。
[0040]步驟104,將與二進制加密運算對應(yīng)的解密程序保存在容器文件中。
[0041]在flash發(fā)布上線前,對其主邏輯文件進行加密,而在客戶端訪問flash時,必然涉及對主邏輯文件的解密。本實施例中的解密程序也可以使用任意高級語言編寫,若加密采用異或運算加密,在解密時將加密主文件對應(yīng)的二進制碼與密鑰進行異或運算,就會得到主邏輯文件。將解密程序保存在容器文件中,以供后續(xù)客戶端對加密的flash文件進行解密。
[0042]進一步的,在本實施例中,解密程序可以預(yù)先進行混淆加密處理?;煜用芴幚黼m然不能完全保護解密程序,但可以加大破解的難度,在一定程度上起到代碼保護的作用?;煜用芴幚淼姆绞娇梢缘幌抻诎?將解密算法包裝為一個程序函數(shù),函數(shù)名選用無意義字符,以及將函數(shù)中的變量名、方法名都采用無意義字符、加入無效語句以及插入不影響執(zhí)行結(jié)果的相似函數(shù)名、相似函數(shù)內(nèi)容等。
[0043]步驟106,將密鑰保存在承載頁面中,該承載頁面為容器文件的承載頁面。
[0044]具體的,加密程序所需的密鑰可以由加密程序?qū)懭氲匠休d頁面中,由客戶端訪問承載頁面時,由客戶端獲取該密鑰,從而使解密程序能夠依據(jù)該密鑰對加密主文件進行解
LU O
[0045]參見圖2,在一個實施例中,提供了一種flash解密方法。該方法可以應(yīng)