Home > 网页前端 > JavaScript混淆与加密

JavaScript混淆与加密

January 9th, 2011 发表评论 阅读评论

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

分类: 网页前端 标签: ,

  1. avatar
    婷婷搜索 2011-03-02 at 12:54 |#17

    学习来的,感谢博主!
  2. avatar
    后宫动漫 2011-02-23 at 23:19 |#16

    文章写的很不错,特地78来支持你的,有时间也到我的博客看看http://www.hougongdongman.info
  3. avatar
    食品雕刻网 2011-02-19 at 16:51 |#14

    很让人头痛的
  4. avatar
    瘦身咖啡 2011-02-16 at 15:33 |#14

    这个太什么什么了,看不懂
  5. avatar
    粤语电影 2011-02-05 at 15:37 |#13

    学习了.感谢分享.之前实在看不懂
  6. avatar
    Angel 2011-02-03 at 18:42 |#12

    嘿嘿 tangsir新年快乐哈。:)
  7. avatar
    Angel 2011-02-03 at 18:41 |#12

    嘿嘿 tangsir新年快乐哈。:)
  8. avatar
    88250 2011-01-20 at 09:03 |#9

    好文。
  9. avatar
    入团申请书 2011-01-19 at 22:09 |#8

    博客写的很不错........
  10. avatar
    宁波网站设计 2011-01-15 at 14:45 |#8

    代码这么长?有点晕了,加密很复杂啊、
  11. avatar
    Hex Bolts 2011-01-12 at 15:29 |#8

    对JavaScript加密还是比较有兴趣的!~~~~~~
  12. avatar
    Facebook中文网 2011-01-12 at 00:38 |#7

    不知道从哪里入门呀,我是新手
  13. avatar
    admin 2011-01-11 at 22:52 |#6

    @等待思索
    代码长了,在感觉上就会吓跑很多人的。。。
  14. avatar
    等待思索 2011-01-11 at 22:51 |#5

    这也太长了吧。。。减肥减肥。。。。。。。
  15. avatar
    admin 2011-01-10 at 12:51 |#4

    @Angel
    我的代码都只是简单的混淆而已哦,很容易恢复的啊。。
  16. avatar
    Angel 2011-01-10 at 10:27 |#3

    好吧,我承认我曾经看过你的 js,嘿嘿,现在那个base.js的某一段加密的很好。
    from wap blog
  17. avatar
    admin 2011-01-10 at 08:50 |#2

    @Mucid
    都一样啊,慢慢来嘛,为了考试,复习还是得忍受一下的
  18. avatar
    Mucid 2011-01-09 at 21:27 |#1

    加密啊,囧,最好是可以优化code。
    PS:考试了,复习的蛋疼
Comment pages
  1. 本文目前尚无任何 trackbacks 和 pingbacks.
/static/smilies/icon_twisted.gif /static/smilies/icon_smile.gif /static/smilies/icon_cry.gif /static/smilies/icon_question.gif /static/smilies/icon_razz.gif /static/smilies/icon_mrgreen.gif /static/smilies/icon_sad.gif /static/smilies/icon_evil.gif /static/smilies/icon_exclaim.gif /static/smilies/icon_redface.gif /static/smilies/icon_biggrin.gif /static/smilies/icon_surprised.gif /static/smilies/icon_eek.gif /static/smilies/icon_confused.gif /static/smilies/icon_cool.gif /static/smilies/icon_lol.gif /static/smilies/icon_mad.gif /static/smilies/icon_rolleyes.gif /static/smilies/icon_wink.gif /static/smilies/icon_idea.gif /static/smilies/icon_arrow.gif /static/smilies/icon_neutral.gif
capacha 请输入验证码(不区分大小写)