天天看点

JavaScript奇淫技巧:用try、catch实现JS代码加密解密

JavaScript奇淫技巧:用try、catch实现JS加密解密

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

原理

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

源码

加密部分:

JavaScript奇淫技巧:用try、catch实现JS代码加密解密

解密部分:

JavaScript奇淫技巧:用try、catch实现JS代码加密解密

完整源码:

       /*加密部分*/

    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再次进行混淆加密,将得到更加安全的加密代码:

运行效果

注意事项

继续阅读