本文目錄一覽:
- 1、js 如何加密
- 2、如何使用js封裝一個使用ASCII碼加密參數的方法
- 3、請問這種JS代碼怎麼加密
- 4、介紹一點js加密的方法
- 5、JS加密方法
- 6、如何給js加密
js 如何加密
JavaScript加密方法無數,但加密後必須把解密程序明文附上,所以加密一點用都沒有
如何使用js封裝一個使用ASCII碼加密參數的方法
js對文字進行編碼涉及3個函數:escape,encodeURI,encodeURIComponent,相應3個解碼函數:unescape,decodeURI,decodeURIComponent
1.傳遞參數時需要使用encodeURIComponent,這樣組合的url才不會被#等特殊字符截斷。
例如:script language=”javascript”document.write(‘a href=”;aid=7u=’+encodeURIComponent(“”)+'”退出/a’);/script
2.進行url跳轉時可以整體使用encodeURI
例如:Location.href=encodeURI(“百度ct=21”);
3. js使用數據時可以使用escape
例如:搜藏中history紀錄。
4.escape對0-255以外的unicode值進行編碼時輸出%u****格式,其它情況下escape,encodeURI,encodeURIComponent編碼結果相同。
請問這種JS代碼怎麼加密
這不算加密,只不過一眼看不出來罷了。其實就是JavaScript字符串轉義。
原理很簡單,比如字符 』w『
它的 charCode 是 119 十六進制表示為 0x77
然後利用 JavaScript 字符串轉義前綴 \x,表達出編碼過的 ASCII 字符來:
\x + charCode的十六進制表示(兩位)
所以字符串 ‘\x77’ 就是字符串 ‘w’
也就是說
‘\x77’ === ‘w’
這個的返回值是 true,二者完全等效!
這是對於 ascii 代碼表示形式,charCode 大於 255 的怎麼處理?就要用到 \u 前綴了
\u + charCode的十六進制表示(
比如漢字 ‘學’ 的 charCode 是 23398 (0x5b66)
書寫時只要把 0x 替換為 \u:
\u5b66
這樣就可以了。
‘\u5b66’ === ‘學’
那麼為什麼要這麼麻煩呢?直接輸入字符不就好了嗎?要知道,有些字符是不能打印或不能被輸入的(比如功能/控制字符「退格」等),如果要在字符串中包含這些字符,只能依靠字符串轉義了!
回頭看樓主給的代碼:
“\x64\x6f\x63\x75\x6d\x65\x6e\x74”
這個是什麼?
F12開瀏覽器開發者工具,切到控制台(或者你有 node.js),在控制台輸入這一串。
你看到輸出什麼了嗎?
“document”
繼續
“\x77\x72\x69\x74\x65\x6c\x6e”
這個輸入後,控制台返回
“writeln”
剩下括號內的也是一樣的啦。結果是一個指向特定地址的 a 標籤。
所以翻譯過來就是
window[‘document’][‘writeln’](‘a href=”…”標籤/a’)
看懂了?
好,既然樓主說要怎麼加密的。我就寫了個 JS 腳本,只要調用這個方法,你就得到「加密」後的字符串信息了:
function encrypt(str) {
var result = ”, charCode
for(var i = 0, length = str.length; i length; i++) {
charCode = str.charCodeAt(i)
if(charCode 0x10) {
result += ‘\\x0’ + charCode.toString(16)
} else if(charCode 0x100) {
result += ‘\\x’ + charCode.toString(16)
} else if(charCode 0x1000) {
result += ‘\\u0’ + charCode.toString(16)
}else {
result += ‘\\u’ + charCode.toString(16)
}
}
return result
}
在控制台執行
encrpty(‘樓主給的那一串’)
返回
“\x3c\x61\x20\x68\x72\x65\x66\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x63\x63\x79\x6d\x6b\x2e\x63\x6f\x6d\x2f\x22\x20\x74\x61\x72\x67\x65\x74\x3d\x22\x5f\x62\x6c\x61\x6e\x6b\x22\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x46\x46\x30\x30\x30\x30\x3b\x22\x3e\x3c\x62\x3e\x43\x43\u6e90\u7801\u8bba\u575b\x3c\x2f\x62\x3e\x3c\x2f\x61\x3e”
樓主只要把括號中的那一串替換為上面輸入的內容就好了。
介紹一點js加密的方法
一:最簡單的加密解密
大家對於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(“\141\154\145\162\164\50\42\u9ED1\u5BA2\u9632\u7EBF\42\51\73”)
/SCRIPT
十六進制轉義字符串如下:
SCRIPT LANGUAGE=”JavaScript”
eval(“\x61\x6C\x65\x72\x74\x28\x22\u9ED1\u5BA2\u9632\u7EBF\x22\x29\x3B”)
/SCRIPT
這次沒有了解碼函數,因為JavaScript執行時會自行轉換,同樣解碼也是很簡單如下:
SCRIPT LANGUAGE=”JavaScript”
alert(“\x61\x6C\x65\x72\x74\x28\x22\u9ED1\u5BA2\u9632\u7EBF\x22\x29\x3B”)
/SCRIPT
就會彈出對話框告訴你解密後的結果!
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(“1411541451621645042u9ED1u5BA2u9632u7EBF425173”)
/SCRIPT
十六進制轉義字符串如下:
SCRIPT LANGUAGE=”JavaScript”
eval(“x61x6Cx65x72x74x28x22u9ED1u5BA2u9632u7EBFx22x29x3B”)
/SCRIPT
這次沒有了解碼函數,因為JavaScript執行時會自行轉換,同樣解碼也是很簡單如下:
SCRIPT LANGUAGE=”JavaScript”
alert(“x61x6Cx65x72x74x28x22u9ED1u5BA2u9632u7EBFx22x29x3B”)
/SCRIPT
就會彈出對話框告訴你解密後的結果!
如何給js加密
一般來說這種加密的做用不大,都有相應的解密程序,即使是自己編寫加密函數那麼可以通過查看你的JS加密函數來解密,所以在做數據庫連接時還是用服務端的角本連接的好。
如果想難住一般人可以用兩種加密,一種是js的escape函數還有一個是JScript.Encode加密,如果需要請留言。
原創文章,作者:SKSU,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/132956.html