• 【无标题】


    JavaScript奇淫技巧:用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

                //异或加密每一个字符,异或密钥: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

                    decoded_string += String.fromCharCode(encoded_string.charCodeAt(i) ^ encode_key );

                }

                encode_key += 1;

                decode();

            }

        }

        decode();

       

    二重加密:

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

     

    运行效果

     

    注意事项

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

  • 相关阅读:
    HTML+CSS+ElementUI搭建个人博客静态页面展示(纯前端)
    WRT1900ACS搭建openwrt服务器小记
    大数据之ZooKeeper(一)
    在线密码破解medusa
    Linux下的触摸屏驱动编程
    综述类论文_Machine Learning for Encrypted Malicious Traffic Detection(重要)
    【无标题】
    迭代器模式:顺序访问集合对象元素的桥梁
    【云原生之Docker实战】使用Docker部署speedtest测速平台
    立体库核心干货|智能自动化立体库高承载高强耐受力高效率专用托盘
  • 原文地址:https://blog.csdn.net/w2sft/article/details/126339468