龙空技术网

巧用try、catch实现JS代码加密

JShaman 924

前言:

而今大家对“js加密狗”都比较关切,姐妹们都想要知道一些“js加密狗”的相关内容。那么小编也在网络上网罗了一些对于“js加密狗””的相关知识,希望你们能喜欢,咱们快快来了解一下吧!

巧用try、catch实现JS代码加密

本文分享一种奇特的JS代码加密解密方法。

技术原理

将JS代码加密,然后在try、catch错误捕捉语法中,用eval进行执行,能执行则表明解密成功,不能执行则意味着解密出错,此时会抛出错误,并由catch捕捉进行重新解密。

源码解析

加密部分:

解密部分:

完整源码

       /*加密部分*/    var source_string ='alert("JShaman提供专业的JavaScript代码混淆加密");';    var encoded_string = "";    function encode(){        for(var i=0;i<source_string.length;i++){            //异或加密每一个字符,异或密钥:61            encoded_string += String.fromCharCode(source_string.charCodeAt(i)^61);        }        alert(encoded_string);        console.log("加密完成:",encoded_string);    }    encode();    /*解密部分*/    //初始解密密钥,初始设为0,可为小于加密字符长度的任意值    var encode_key = 0;    //解密后的字符串,初始为加密值    var decoded_string = encoded_string;    function decode(){        try{                       //eval执行,能执行则说明解密成功,因为原始代码是alert,是能正确执行的语句            eval(decoded_string);            console.log("解密成功:", decoded_string);        }catch(e){            decoded_string ="";            for(var i=0; i<encoded_string.length; i++){                decoded_string += String.fromCharCode(encoded_string.charCodeAt(i) ^ encode_key );            }            encode_key += 1;            decode();        }    }    decode();   
二重加密

如果把以上代码,用JShaman再次进行混淆加密,将得到更加安全的加密代码:

也可用Ty2y进行JS代码混淆加密:

得到的加密代码:

运行效果注意事项

这是一种思路新奇的加密手段,但此方法有一定的使用条件限制:因解密时要依赖eval执行,因此被加密的语句需要是可执行的,比如需包裹在alert、console.log等等语句中。

标签: #js加密狗