解决方案 »

  1.   

    http://www.jb51.net/tools/eval/
      

  2.   

    以前有碰到过一个,只有解密函数,没加密的,然后自己依据解密代码推算出加密的你看看合适不合适了加密后如乱码。。执行解密代码
     <script type="text/javascript">
         _$_ = ["", "\x77\x72\x69\x74\x65", "\x6c\x65\x6e\x67\x74\x68", "\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74", "\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65", "\x73\x75\x62\x73\x74\x72", "\x40", "\x65"];
         var a = { e: function (__0, __1) { var __2, __3, __4, __5 = _$_[0]; if (__1 == 0) { eval(__5) } else if (__1 == 1) { document[_$_[1]](__0) } else { for (__3 = 0; __3 < __0[_$_[2]]; __3++) { { __2 = __0[_$_[3]](__3); if (__2 >= 33 && __2 <= 79) { __5 = __5 + String[_$_[4]](__2 + 47) } else if (__2 >= 80 && __2 <= 126) { __5 = __5 + String[_$_[4]](__2 - 47) } else { __4 = __3 + 1; if (__0[_$_[5]](__4, 1) == _$_[6]) { __5 = __5 + String[_$_[4]](__2 + 5) } else { __5 = __5 + __0[_$_[5]](__3, 1) } __3++ } } } a[_$_[7]](__5, 1) } } };
         //使用方法
         //a.e("被加密混淆过的HTML或者javascript代码")
         a.e("k2 ,9C67lQ9EEAi^^HHH]4@5:?8`ab]?6EQm缑@稆@讹@讜@罌@k^2mkD4C:AE ,EJA6lQE6IE^;2G2D4C:AEQm2=6CEW`abXk^D4C:AEm");
    </script>js加密/解密代码的
    <meta charset="gb2312" />
    <form method="post" onsubmit="return _de_encrypt(this)">
    <b>要加密/解密的代码</b><br />
    <textarea name="source" rows="6" cols="80"></textarea>
    <br /><b>类型:</b><input type="radio" name="type"/>加密 <input type="radio" name="type"/>解密<br />
    <b>加密/解密结果</b><br />
    <textarea name="target" rows="6" cols="80" readonly="readonly"></textarea><br />
    <input type="submit" value="开始"/></form>
    <script type="text/javascript">
        function _de_encrypt(f) {
            if (f.source.value == '') { alert('请输入“要加密/解密的代码”!'); f.source.focus(); return false; }
            if (!f.type[0].checked && !f.type[1].checked) { alert('请选择“类型”!'); f.type[0].focus(); return false; }
            f.target.value = window[f.type[0].checked ? 'encrypt' : 'decrypt'](f.source.value);
            return false;
        }
        function encrypt(v) {
            var s = '', charCode;
            for (var i = 0, len = v.length; i < len; i++) {
                charCode = v.charCodeAt(i);
                if (charCode >= 33 && charCode <= 79) s += String.fromCharCode(charCode + 47);
                else if (charCode >= 80 && charCode <= 126) s += String.fromCharCode(charCode - 47);
                else if ((charCode >= 0 && charCode <= 32) || (charCode >= 127 && charCode <= 133)) s += String.fromCharCode(charCode) + ',';
                else s += String.fromCharCode(charCode - 5) + '@';
            }
            return s;
        }
        function decrypt(v) {
            var i, charCode, s = '', preIndex;
            for (i = 0; i < v.length; i++) {
                charCode = v.charCodeAt(i);
                if (charCode >= 33 && charCode <= 79) s = s + String.fromCharCode(charCode + 47);
                else if (charCode >= 80 && charCode <= 126) s = s + String.fromCharCode(charCode - 47);
                else {
                    preIndex = i + 1;
                    if (v.substr(preIndex, 1) == "@") s = s + String.fromCharCode(charCode + 5)
                    else s = s + v.substr(i, 1);
                    i++;
                }
            }
            return s;
        }
     </script>可以看这个,有服务器端的加密方法,客户端js加密解密不利于读取文件,只能自己贴进去
    C#/vbscript/JS如何加密保护HTML/javascript源代码
      

  3.   

    加密的思路    1)ASCII编码内可见字符【33~126】,33~79进行+47操作操作,80~126进行-47操作
        2)ASCII编码内部可见字符【0~32,127】,【128~133】,不操作,但是在后面增加【,】,变2个字符
        3)其他,-5操作,后接@变2字符
    你可以用“js加密/解密代码的”这个执行加密操作,会得到一串乱码,这串乱码作为“执行解密代码”函数a.e的参数你展现给客户端看的就是“执行解密代码”这里显示的 <script type="text/javascript">
         _$_ = ["", "\x77\x72\x69\x74\x65", "\x6c\x65\x6e\x67\x74\x68", "\x63\x68\x61\x72\x43\x6f\x64\x65\x41\x74", "\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65", "\x73\x75\x62\x73\x74\x72", "\x40", "\x65"];
         var a = { e: function (__0, __1) { var __2, __3, __4, __5 = _$_[0]; if (__1 == 0) { eval(__5) } else if (__1 == 1) { document[_$_[1]](__0) } else { for (__3 = 0; __3 < __0[_$_[2]]; __3++) { { __2 = __0[_$_[3]](__3); if (__2 >= 33 && __2 <= 79) { __5 = __5 + String[_$_[4]](__2 + 47) } else if (__2 >= 80 && __2 <= 126) { __5 = __5 + String[_$_[4]](__2 - 47) } else { __4 = __3 + 1; if (__0[_$_[5]](__4, 1) == _$_[6]) { __5 = __5 + String[_$_[4]](__2 + 5) } else { __5 = __5 + __0[_$_[5]](__3, 1) } __3++ } } } a[_$_[7]](__5, 1) } } };
         //使用方法
         //a.e("被加密混淆过的HTML或者javascript代码")
         a.e("k2 ,9C67lQ9EEAi^^HHH]4@5:?8`ab]?6EQm缑@稆@讹@讜@罌@k^2mkD4C:AE ,EJA6lQE6IE^;2G2D4C:AEQm2=6CEW`abXk^D4C:AEm");
    </script>红色的就是加密后代码,需要用a.e来解释执行。其实加密js没意义,总能破的,只能拦截小白