專(zhuān)利名稱(chēng):一種JavaScript代碼的混淆方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種JavaScript代碼的混淆方法和裝置。
背景技術(shù):
JavaScript是一種跨平臺(tái)的開(kāi)放式腳本描述語(yǔ)言,同時(shí)是一種解釋執(zhí)行的腳本語(yǔ)言,主要應(yīng)用于網(wǎng)絡(luò)領(lǐng)域的客戶(hù)端瀏覽器中。由于JavaScript需要解釋執(zhí)行的特點(diǎn),所以JavaScript代碼,即用JavaScript語(yǔ)言編寫(xiě)的代碼,必須被明文下載到客戶(hù)端,這使得以明文形式顯示的JavaScript代碼很容易被他人盜用,不能得到保護(hù)。隨著JavaScript語(yǔ)言在網(wǎng)絡(luò)應(yīng)用領(lǐng)域的作用日趨重要,JavaScript代碼的復(fù)雜性、功能性和技術(shù)含量也越來(lái)越高,所以對(duì)JavaScript代碼保護(hù)技術(shù)的需求也日趨迫切。JavaScript代碼混淆技術(shù)是現(xiàn)有技術(shù)的代碼保護(hù)方法,在JavaScript代碼被下載到客戶(hù)端的過(guò)程中,將JavaScript代碼混淆?,F(xiàn)有技術(shù)中存在兩種JavaScript代碼混淆的方法,第一種方法是利用JavaScript中的escape O函數(shù)對(duì)JavaScript代碼進(jìn)行加密,同時(shí)可以使用unescape O函數(shù)對(duì)加密后的JavaScript代碼進(jìn)行解密。第二種方法是首先將JavaScript代碼中的換行符去除,其次將去除換行符的JavaScript代碼中的變量名稱(chēng)用隨機(jī)名稱(chēng)進(jìn)行替換。現(xiàn)有技術(shù)的第一種方法中,由于JavaScript中的escape O函數(shù)和unescape()函數(shù)眾所周知,所以利用第一種方法對(duì)JavaScript代碼進(jìn)行混淆不能使其安全性得到保障。運(yùn)用第二種方法對(duì)JavaScript代碼進(jìn)行混淆后,獲取的JavaScript代碼中除了被替換的變量名稱(chēng)仍存在本領(lǐng)域技術(shù)人員可讀取的有意義的字符,所以該方法仍然不能有效地保護(hù)JavaScript 代石馬。
發(fā)明內(nèi)容
為了防止JavaScript代碼被盜用,同時(shí)有效的保護(hù)JavaScript代碼,本發(fā)明提供了一種JavaScript代碼的混淆方法和裝置。本發(fā)明提供一種JavaScript代碼的混淆方法,所述方法包括:獲取JavaScript代碼作為源代碼;去除所述源代碼中的冗余內(nèi)容后,獲取處理后源代碼;獲取所述處理后源代碼中的變量名稱(chēng);用預(yù)先生成的名稱(chēng)替換所述變量名稱(chēng)后,獲取替換后源代碼;將所述替換后源代碼進(jìn)行進(jìn)制變換后,獲取混淆后源代碼。優(yōu)選地,所述用預(yù)先生成的名稱(chēng)替換所述變量名稱(chēng)后,獲取替換后源代碼之前,還包括:通過(guò)隨機(jī)算法隨機(jī)生成名稱(chēng)。優(yōu)選地,所述獲取JavaScript代碼的源代碼,包括:根據(jù)分隔符,將所述JavaScript代碼分組存儲(chǔ);
獲取分組存儲(chǔ)的JavaScript代碼作為源代碼。優(yōu)選地,所述去除所述源代碼中的冗余內(nèi)容后,獲取處理后源代碼,包括:去除所述源代碼中的注釋字符和空行;以及去除所述源代碼中的回車(chē)換行和Tab符號(hào)。優(yōu)選地,將所述替換后源代碼進(jìn)行進(jìn)制變換后,獲取混淆后源代碼,包括: 將所述替換后源代碼轉(zhuǎn)換成16進(jìn)制;獲取轉(zhuǎn)換成16進(jìn)制的混淆后源代碼。本發(fā)明還提供一種JavaScript代碼的混淆裝置,所述裝置包括:第一獲取模塊,用于獲取JavaScript代碼作為源代碼;第二獲取模塊,用于去除所述源代碼中的冗余內(nèi)容后,獲取處理后源代碼;第三獲取模塊,用于獲取所述處理后源代碼中的變量名稱(chēng);第四獲取模塊,用于將所述變量名稱(chēng)替換為預(yù)先生成的名稱(chēng)后,獲取替換后源代碼;第五獲取模塊,用于將所述替換后源代碼進(jìn)行進(jìn)制變換后,獲取混淆后源代碼。優(yōu)選地,所述裝置還包括:生成模塊,用于通過(guò)隨機(jī)算法隨機(jī)生成名稱(chēng)。優(yōu)選地,所述第一獲取模塊包括:存儲(chǔ)子模塊,用于根據(jù)分隔符,將所述JavaScript代碼分組存儲(chǔ);第一獲取子模塊,用于獲取分組存儲(chǔ)的JavaScript代碼作為源代碼。優(yōu)選地,所述第二獲取模塊包括:第一去除子模塊,用于去除所述源代碼中的注釋字符和空行;第二去除子模塊,用于去除所述源代碼中的回車(chē)換行和Tab符號(hào)。優(yōu)選地,所述第五獲取模塊包括:替換子模塊,用于將所述替換后源代碼轉(zhuǎn)換成16進(jìn)制;第二獲取子模塊,用于獲取轉(zhuǎn)換成16進(jìn)制的混淆后源代碼。與現(xiàn)有技術(shù)相比,本發(fā)明首先獲取JavaScript代碼作為源代碼;其次,去除源代碼中的冗余內(nèi)容后,獲取處理后源代碼;再次,獲取所述處理后源代碼中的變量名稱(chēng);用預(yù)先生成的名稱(chēng)替換所述變量名稱(chēng)后,獲取替換后源代碼;最后,將所述替換后源代碼進(jìn)行進(jìn)制變換后,獲取混淆后源代碼。本發(fā)明采取了保護(hù)代碼的邏輯不被他人理解的方法,對(duì)JavaScript代碼進(jìn)行混淆,達(dá)到了有效保護(hù)JavaScript代碼的目的,同時(shí)防止JavaScript代碼被盜用。
為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例一的JavaScript代碼的混淆方法流程圖;圖2為本發(fā)明實(shí)施例二的JavaScript代碼的混淆裝置結(jié)構(gòu)圖3為本發(fā)明實(shí)施例二的所述第一獲取模塊201的結(jié)構(gòu)圖;圖4為本發(fā)明實(shí)施例二的所述第二獲取模塊202的結(jié)構(gòu)圖;圖5為本發(fā)明實(shí)施例二的所述第五獲取模塊206的結(jié)構(gòu)圖。
具體實(shí)施例方式下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。實(shí)施例一、參考圖1,圖1為本發(fā)明提供的一種JavaScript代碼的混淆方法實(shí)施例一的流程圖,本實(shí)施例具體可以包括:步驟101、獲取JavaScript代碼作為源代碼。 本實(shí)施例中,在實(shí)現(xiàn)JavaScript代碼的混淆之前,首先獲取JavaScript代碼作為源代碼,以便確定后續(xù)代碼混淆的處理對(duì)象。以如下源代碼為例,具體源代碼為:
權(quán)利要求
1.一種JavaScript代碼的混淆方法,其特征在于,所述方法包括: 獲取JavaScript代碼作為源代碼; 去除所述源代碼中的冗余內(nèi)容后,獲取處理后源代碼; 獲取所述處理后源代碼中的變量名稱(chēng); 用預(yù)先生成的名稱(chēng)替換所述變量名稱(chēng)后,獲取替換后源代碼; 將所述替換后源代碼進(jìn)行進(jìn)制變換后,獲取混淆后源代碼。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述用預(yù)先生成的名稱(chēng)替換所述變量名稱(chēng)后,獲取替換后源代碼之前,還包括: 通過(guò)隨機(jī)算法隨機(jī)生成名稱(chēng)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述獲取JavaScript代碼的源代碼,包括: 根據(jù)分隔符,將所述JavaScript代碼分組存儲(chǔ); 獲取分組存儲(chǔ)的JavaScript代碼作為源代碼。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述去除所述源代碼中的冗余內(nèi)容后,獲取處理后源代碼,包括: 去除所述源代碼中的注釋字符和空行; 以及去除所述源代碼中的回車(chē)換行和Tab符號(hào)。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,將所述替換后源代碼進(jìn)行進(jìn)制變換后,獲取混淆后源代碼,包括: 將所述替換后源代碼中的部分代碼轉(zhuǎn)換成16進(jìn)制; 獲取轉(zhuǎn)換成16進(jìn)制的混淆后源代碼。
6.一種JavaScript代碼的混淆裝置,其特征在于,所述裝置包括: 第一獲取模塊,用于獲取JavaScript代碼作為源代碼; 第二獲取模塊,用于去除所述源代碼中的冗余內(nèi)容后,獲取處理后源代碼; 第三獲取模塊,用于獲取所述處理后源代碼中的變量名稱(chēng); 第四獲取模塊,用于將所述變量名稱(chēng)替換為預(yù)先生成的名稱(chēng)后,獲取替換后源代碼; 第五獲取模塊,用于將所述替換后源代碼進(jìn)行進(jìn)制變換后,獲取混淆后源代碼。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括: 生成模塊,用于通過(guò)隨機(jī)算法隨機(jī)生成名稱(chēng)。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第一獲取模塊包括: 存儲(chǔ)子模塊,用于根據(jù)分隔符,將所述JavaScript代碼分組存儲(chǔ); 第一獲取子模塊,用于獲取分組存儲(chǔ)的JavaScript代碼作為源代碼。
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第二獲取模塊包括: 第一去除子模塊,用于去除所述源代碼中的注釋字符和空行; 第二去除子模塊,用于去除所述源代碼中的回車(chē)換行和Tab符號(hào)。
10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第五獲取模塊包括: 替換子模塊,用于將所述替換后源代碼轉(zhuǎn)換成16進(jìn)制; 第二獲取子模塊,用于獲取轉(zhuǎn)換成16進(jìn)制的混淆后源代碼。
全文摘要
本發(fā)明實(shí)施例公開(kāi)了一種JavaScript代碼的混淆方法和裝置,所述方法包括獲取JavaScript代碼作為源代碼;去除所述源代碼中的冗余內(nèi)容后,獲取處理后源代碼;獲取所述處理后源代碼中的變量名稱(chēng);用預(yù)先生成的名稱(chēng)替換所述變量名稱(chēng)后,獲取替換后源代碼;將所述替換后源代碼進(jìn)行進(jìn)制變換后,獲取混淆后源代碼。本發(fā)明采取了保護(hù)代碼的邏輯不被他人理解的方法,對(duì)JavaScript代碼進(jìn)行混淆,達(dá)到了有效保護(hù)JavaScript代碼的目的,同時(shí)防止JavaScript代碼被盜用。
文檔編號(hào)G06F21/14GK103150493SQ20131006385
公開(kāi)日2013年6月12日 申請(qǐng)日期2013年2月28日 優(yōu)先權(quán)日2013年2月28日
發(fā)明者王永志, 譚彰, 賴(lài)曉健, 陳挺 申請(qǐng)人:浙江中控技術(shù)股份有限公司