JavaScript混淆与加密
JavaScript是一种广泛用于客户端Web开发的脚本语言,常用来给HTML网页添加动态功能,比如响应用户的各种操作等。其源代码在发往客户端运行之前不需经过编译,而是将文本格式的字符代码发送给浏览器由浏览器解释运行。
在一般情况下,我们可以通过读取javascript脚本文件,也可以加上格式化工具来辅助(有时,某些编译器会把javascript的变量名自动缩短,当然这对理解程序来说也没有太大难度。)查看,这样我们的代码是不是没有一点“隐私”呢?
我们可以使用对JavaScript脚本“压缩、混淆、加密”的方法,一方面提高数据在网络中的传输效率,另一方面也增强了代码的安全性。
目前网络上比较著名的JS压缩引擎有JSMin、Yahoo!的YUI Compressor 和Google的Closure Compiler 。从这两者的名称上,我们就可以看到两者有所不同,YUI Compressor是一个压缩器(Compressor),而Closure Compiler更是一个编译器(Compiler),也就是说GC的压缩并不仅仅是去除注释和空白,还可以在保证代码正确性的情况下进一步地改写成更省空间的做法,如:
var a; var b; --> var a, b;
return 1+1; --> return 2;
var f = function(){}; --> function f(){};
如果你有需要了解以上所提的几种工具的其中一个,建议你查看该链接,或者通过搜索引擎获取更多相关信息。我们在具体环境下,可以根据自己的习惯选择适合自己的工具来压缩代码,只要是压缩后的代码能够正常执行即可。
可能有人会认为以上的代码只是做出了代码压缩的功能,混淆加密的程度好像还不够啊?在网络上提供的代码混淆的工具貌似也比较多,想必每个人都能想出自己通常使用了哪一款工具,我也就不用替谁宣传了,:-) 我给大家说一个极端加密的例子,通过此工具混淆出来的代码,如果有人想分析的话,恐怕过个十天半月也不一定有结果,o(∩_∩)o 。
这是一个日本作者创作的一个JS加密范例,网址是jjencode ,有兴趣的朋友可以去瞧瞧。 这个加密工具号称对任何JS代码仅仅使用符号来加密,其加密出来的代码解码的难度可想而知…
比如JavaScript的 Hello World:
alert("Hello World!");
经过jjencode加密后 的 Hello World:
$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+$.$_$_+(![]+"")[$._$_]+$.$$$_+"\\"+$.__$+$.$$_+$._$_+$.__+"(\\\"\\"+$.__$+$.__$+$.___+$.$$$_+(![]+"")[$._$_]+(![]+"")[$._$_]+$._$+"\\"+$.$__+$.___+"\\"+$.__$+$._$_+$.$$$+$._$+"\\"+$.__$+$.$$_+$._$_+(![]+"")[$._$_]+$.$$_$+"!\\\");"+"\"")())();
看这个代码是不是很伤脑筋啊,o(∩_∩)o ,加密效果确实很好啊,不过代码体积也增长了不少啊… …
转载请以超链接注明来自 云在天边看世界本文永久链接 http://www.tangblog.info/2011/01/9/javascript-encode-encrypt.html
代码长了,在感觉上就会吓跑很多人的。。。
我的代码都只是简单的混淆而已哦,很容易恢复的啊。。
from wap blog
都一样啊,慢慢来嘛,为了考试,复习还是得忍受一下的
PS:考试了,复习的蛋疼