㈠ JS加密方法
本文一共介紹了七種方法:
一:最簡單的加密解密
二:轉義字元""的妙用
三:使用Microsoft出品的腳本編碼器Script Encoder來進行編碼 (自創簡單解碼)
四:任意添加NUL空字元(十六進制00H) (自創)
五:無用內容混亂以及換行空格TAB大法
六:自寫解密函數法
七:錯誤的利用 (自創)
在做網頁時(其實是網頁木馬呵呵),最讓人煩惱的是自己辛辛苦苦寫出來的客戶端IE運行的JAVASCRIPT代碼常常被別人輕易的拷貝,實在讓自己的心裡有點不是滋味,要知道自己寫點東西也挺累的......^*^
但我們也應該清楚地認識到因為JAVASCRIPT代碼是在IE中解釋執行,要想絕對的保密是不可能的,我們要做的就是盡可能的增大拷貝者復制的難度,讓他知難而退(但願~!~),下面我結合自己這幾年來的實踐,及個人研究的心得,和大家一起來探討一下網頁中JAVASCRIPT代碼的加密解密技術。
以加密下面的JAVASCRIPT代碼為例:
<SCRIPT LANGUAGE="JavaScript">
alert("《黑客防線》");
</SCRIPT>
一:最簡單的加密解密
大家對於JAVASCRIPT函數escape()和unescape()想必是比較了解啦(很多網頁加密在用它們),分別是編碼和解碼字元串,比如例子代碼用escape()函數加密後變為如下格式:
alert%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B
如何?還看的懂嗎?當然其中的ASCII字元"alert"並沒有被加密,如果願意我們可以寫點JAVASCRIPT代碼重新把它加密如下:
%61%6C%65%72%74%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B
呵呵!如何?這次是完全都加密了!
當然,這樣加密後的代碼是不能直接運行的,幸好還有eval(codeString)可用,這個函數的作用就是檢查JavaScript代碼並執行,必選項 codeString 參數是包含有效 JavaScript 代碼的字元串值,加上上面的解碼unescape(),加密後的結果如下:
<SCRIPT LANGUAGE="JavaScript">
var code=unescape("%61%6C%65%72%74%28%22%u9ED1%u5BA2%u9632%u7EBF%22%29%3B");
eval(code)
</SCRIPT>
是不是很簡單?不要高興,解密也就同樣的簡單,解密代碼都擺給別人啦(unescape())!呵呵
二:轉義字元""的妙用
大家可能對轉義字元""不太熟悉,但對於JavaScript提供了一些特殊字元如:n (換行)、 r (回車)、' (單引號 )等應該是有所了解的吧?其實""後面還可以跟八進制或十六進制的數字,如字元"a"則可以表示為:"141"或"x61"(注意是小寫字元"x"),至於雙位元組字元如漢字"黑"則僅能用十六進製表示為"u9ED1"(注意是小寫字元"u"),其中字元"u"表示是雙位元組字元,根據這個原理例子代碼則可以表示為:
八進制轉義字元串如下:
<SCRIPT LANGUAGE="JavaScript">
eval("")
</SCRIPT>
十六進制轉義字元串如下:
<SCRIPT LANGUAGE="JavaScript">
eval("")
</SCRIPT>
這次沒有了解碼函數,因為JavaScript執行時會自行轉換,同樣解碼也是很簡單如下:
<SCRIPT LANGUAGE="JavaScript">
alert("")
</SCRIPT>
就會彈出對話框告訴你解密後的結果!
㈡ 關於JS加密,這個是什麼加密方式如何進行加密和解密
7種加密方式:http://www.codesky.net/article/200911/165731.html
㈢ 如何破解JS腳本加密
在網頁中加入一個,然後在加密代碼中找document.write(),eval(),execScript()或VBS的EXECUTE語句,並用document.getElementById("textareaID").innerText=STR 替換。加密就不攻自破了。www.hrbfc120.com
(STR是轉換好的字元串變數,如在加密代碼中找到 document.write(s); 就用 document.getElementById("textareaID").innerText=s; 替換)
㈣ 怎麼加密js代碼
可以在網上搜索一下js的在線加密工具。
js真正可以加密的方法很少,大多數方法只能壓縮混淆代碼。
㈤ 如何實現js代碼MD5加密,傳到後台C#中再解密
沒法,md5加密會生產16位或者32位字元串,不同個數的空格產生的md5碼不同,因為加密不可逆,到後台根本沒法判斷。
其實密碼輸入空格也無大礙,這樣反而可以提高密碼安全性(試問哪個黑客會料到你的密碼是10個空格...)
如果你struts2必須校驗密碼空格的話,那隻能使用雙向加密技術了,在js端加密,在後台再解密還原
㈥ 求助前端JS都是用什麼加密的
寫過 js混淆器,談一些淺顯的個人看法。
個人認為,js的不可讀化處理分為三個方面:壓縮(compression)、混淆(obfuscation) 和加密(encryption)。 (不可讀化處理,這是我自己發明的術語,一切會增加代碼不可讀性的代碼轉換, 都可以這么叫,「增加代碼不可讀性」可能是代碼轉換的結果或者目的).
1. 壓縮
這一操作的目的,是讓最終代碼傳輸量 (不代表代碼量, 也不代表文件體積)盡可能小。壓縮js的工具,常見的有:YUI Compressor、UglifyJS、Google Closure Compiler 等。
通常在代碼壓縮的過程中,只改變代碼的語法,代碼的語義和控制流不會有太大改變。
常見做法是把局部變數縮短化,把一些運算進行等價替換等。代碼壓縮對於代碼保護有一些幫助,但由於語義和控制流基本沒變,起不了太大作用。
在壓縮層面上,代碼不可讀只是一種附帶傷害,不是最終目的。
2. 混淆
這一操作的目的,是讓代碼盡可能地不可讀,主要用作代碼保護。
讓代碼不可讀,增加分析的難度,這是唯一目的。混淆過後文件體積變大一倍也沒關系,代碼量變多也沒關系,運算慢50% 也沒關系。
常見的做法有:分離常量、打亂控制流、增加無義代碼、檢查運行環境如果不對就罷工,等等。
在混淆層面上,代碼不可讀是最終目的。
值得一提的是,Google Closure Compiler 的 Advance Level Compression 會壓縮類和對象的成員,其壓縮結果很難分析,也可以認為是一種混淆,但兼容性不太好。
廣告時間:我寫的 js混淆器,中文名叫 「看起來很厲害的 JS 編譯器」, 英文名叫做 The Impressive JS.Segment.Compiler , 看起來很厲害的 JS 編譯器 。
3. 加密
說實話我很難對加密做一個定義,因為加密在Web界有太多歧義了。
有加密就有解密,意味著加密操作可逆,密文可以明文化。
就這樣看來,在Web界,可以稱之為加密的東西包括:HTTPS傳輸、JavaScript實現對稱加密或者不對稱加密等等。
這樣看來,不可逆的代碼壓縮和混淆就不能列入加密這個范疇了。
非要找一個可以稱之為加密,又經常被人誤解為壓縮和混淆的東西,Dean Edwards 的 Dean Packer/Unpacker 可以拿來做個例子。
比如我們把 var num=1;alert(num);
輸入 Dean Packer,pack 一下,得到這么一串東西,是不是看著非常像被壓縮和混淆過的代碼?
把上面那串意義不明物拿來 unpack 一下,得到了原文。
實際上 Dean Packer 只是對源碼進行了一個字元串變換,沒有深入到代碼語法層面,你可以拿 "Hello world, 你好師姐" 來試試。
用Online JavaScript beautifier 能輕松把這串東西還原為 「Hello world, 你好師姐」。
可以看出,代碼加密意味著:將代碼明文進行可逆的變換(加密),生成密文;將密文進行逆變換(解密),可以還原明文;最終運行環境運行的是解密代碼。
結語
實際上大家對壓縮、混淆、加密這三個概念還是挺不清晰的,我在這里說一些個人見解,希望有幫助。
在現實項目中,我是多種手段結合的:
對於不需要做代碼保護的項目,比如個人博客,做代碼壓縮,加快載入速度,這就夠了。
對於需要做一些代碼保護,防止抄襲的項目,可以在源碼中加入一些開發者的信息和防護代碼,然後混淆和壓縮。很不幸的是,我這方面總是做得不太好,防君子防不了小人啊哈哈。
對於需要嚴格加密的項目,可以用 混淆、壓縮、加密、簽名檢查 等多種手段,這我就不清楚了,等大嬸來補充。
㈦ 求助!以下Js代碼使用什麼方法加密的,怎麼解密!求高手!!!!!!!!!!!
js加密的方法比較多。但是我看著你這個不像是js加密倒像是php加密。呵呵,要是有全部的源碼就好了。
各種加密解密的方法下面的參考資料網址裡面有,你不妨去看看。
㈧ 如何對JS代碼加密
JS加密其實就是對字元進行編碼,也不是一定要用工具 有兩個函數的 ")+"");
㈨ 怎樣對html+js代碼進行不可逆加密
雙層或者多層加密,別人破開的幾率會小很多
㈩ 一個JS加密求助
就是在字元串的後面加上一個時間戳,然後進行MD5編碼。
這其實不算是加密(因為這是不可逆的,你不能根據這個編碼後的字元串逆算出原來的字元串),就是計算字元串的md5散列值,類似於提取指紋。以後在需要的時候,把預想的字元串加上原來的那個時間戳,再次計算md5散列值,把兩個結果進行比對(也就類似於指紋比對),結果相符就說明這個預想的字元串就是原來的那個字元串。