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