Javascript 核心方法加密,JS方法完美在线加密工具介绍及演示

Mar 30, 2020 8:51:23 PM 21716

今天把我们方法级别加密上线了,欢迎会员进行体验,优缺点都介绍下。

Javascript 核心方法加密介绍:

JS方法加密工具地址:https://www.jsjiami.com/encodefunction.html

优点:

1.完全打乱顺序,并且很难跟踪执行顺序。

2.加密核心字符串,改变字符串显示内容,使他人无法定位到核心字符串及文字等内容。

3.加密后再配合“最牛JS加密”使用,简直是完美。

4. 还有很多自己去发现。

缺点:

1.不支持ES6语法,还有复杂的语法不支持。

2.支持一个内置单个方法的闭包或者单个JS方法加密,多个方法请单独加密。

Javascript 核心方法加密代码对比

随便拿一个无意义的代码,然后来演示一下。

JavaScript加密前源码:

function sendPost(options){
    var pramas = {
        url: '',
        type: 'post',
        data: {},
        success: function (data) {},
        error: function (err) {},
    };
    pramas.data.token = '演示代码'
    options = Object.assign(pramas, options);
    if(options.url){
        var xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP")
        var url = options.url,
            type = options.type.toUpperCase(),
            data = pramas,
            dataArr = [];
        for(let key in data){
            let value = key + '='+ data[key];
            dataArr.push(value)
        }
        if(type === "GET"){
            url = url + "?" + dataArr.join('&');
            xhr.open(type, url, true);
            xhr.send()
        }
        if(type === "POST"){
            xhr.open(type, url, true);
            xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
            xhr.send(dataArr.join('&'))
        }
        xhr.onreadystatechange = function(){
            if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {  
                options.success(xhr.responseText)
            }else {
                options.error(xhr.responseText)
            }
        }
    }
}

JavaScript加密后密文:

加密后函数名 sendPost是不变的,参数名字也没变,然后里面变了。而且一些字符串都搜索不到了。token 就找不到了,并且可以找找代码的顺序。

当然不是最佳实现,最佳实现是,用这个加密加密完毕后,再用最 牛加JS加密工具 加密一下,那就完美了。

function sendPost(options) {
  var DgG = function (s) {
    this.s = s;
    this.length = s.length;

    for (var i = 0; i < s.length; i++) {
      this[i] = s.charAt(i);
    }
  };

  var Yw0 = function getStr(mutatedCodes) {
    return function (originCodes) {
      return function (s) {
        var r = '',
            sArr = s.split('');

        for (var i = 0; i < sArr.length; i++) {
          r += originCodes.charAt(mutatedCodes.indexOf(sArr[i]));
        }

        return r;
      };
    };
  }("Mw示mOyXrTaEs?代nf.GluPdiHkc-ox码演=/&eCStLp")("postken演示代码Micrf.XLHTP=GEOS?&C-yal/xwmud");

  DgG.prototype = {
    toString: function () {
      return Yw0(this.s);
    },
    valueOf: function () {
      return Yw0(this.s);
    },
    charAt: String.prototype.charAt,
    concat: String.prototype.concat,
    slice: String.prototype.slice,
    substr: String.prototype.substr,
    indexOf: String.prototype.indexOf,
    trim: String.prototype.trim,
    split: String.prototype.split
  };

  var Q0v = function (s) {
    return new DgG(s);
  };

  var khG = function _176411(arrNum, offset) {
    var E0CqQ = 1;

    while (E0CqQ !== 0) {
      switch (E0CqQ) {
        case 1:
          var arr = [];
          E0CqQ = 5;
          break;

        case 2:
          E0CqQ = i < arrNum ? 7 : 3;
          break;

        case 3:
          E0CqQ = ii < arrNum ? 8 : 4;
          break;

        case 4:
          return arr;
          E0CqQ = 0;
          break;

        case 5:
          var i = 0;
          E0CqQ = 6;
          break;

        case 6:
          var ii = 0;
          E0CqQ = 2;
          break;

        case 7:
          arr[(i + offset) % arrNum] = [];
          E0CqQ = 9;
          break;

        case 8:
          var I = arrNum - 1;
          E0CqQ = 10;
          break;

        case 9:
          i++;
          E0CqQ = 2;
          break;

        case 10:
          E0CqQ = I >= 0 ? 12 : 11;
          break;

        case 11:
          ii++;
          E0CqQ = 3;
          break;

        case 12:
          arr[ii][(I + offset * ii) % arrNum] = arr[I];
          E0CqQ = 13;
          break;

        case 13:
          I--;
          E0CqQ = 10;
          break;
      }
    }
  }(20, 7);

  var Sa7fr = khG[15][5][1];

  while (Sa7fr !== khG[13][12][7]) {
    switch (Sa7fr) {
      case khG[8][8][5]:
        var pramas = {
          url: '',
          type: Q0v("Mw\u793Am"),
          data: {},
          success: function (data) {},
          error: function (err) {}
        };
        Sa7fr = khG[6][16][0];
        break;

      case khG[3][6][17]:
        pramas.data[Q0v("mwOyX")] = Q0v("rT") + Q0v("aE");
        Sa7fr = khG[14][17][16];
        break;

      case khG[11][7][13]:
        options = Object.assign(pramas, options);
        Sa7fr = khG[5][3][0];
        break;

      case khG[9][2][17]:
        Sa7fr = options.url ? khG[2][9][10] : khG[1][15][16];
        break;

      case khG[10][12][19]:
        var xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject(Q0v("s?\u4EE3nw\u793Awfm.GsluPPd"));
        Sa7fr = khG[16][7][11];
        break;

      case khG[2][18][14]:
        var url = options.url;
        Sa7fr = khG[2][10][3];
        break;

      case khG[11][4][16]:
        for (let key in data) {
          let value = key + Q0v("i") + data[key];
          dataArr.push(value);
        }

        Sa7fr = khG[0][13][19];
        break;

      case khG[11][19][2]:
        Sa7fr = type === "GET" ? khG[12][10][16] : khG[12][3][2];
        break;

      case khG[12][16][13]:
        Sa7fr = type === "POST" ? khG[11][1][3] : khG[18][7][17];
        break;

      case khG[14][4][12]:
        xhr.onreadystatechange = function () {
          if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
            options.success(xhr.responseText);
          } else {
            options.error(xhr.responseText);
          }
        };

        Sa7fr = khG[3][11][10];
        break;

      case khG[16][6][9]:
        var type = options.type.toUpperCase();
        Sa7fr = khG[15][9][0];
        break;

      case khG[3][6][7]:
        var data = pramas;
        Sa7fr = khG[8][13][12];
        break;

      case khG[13][15][1]:
        var dataArr = [];
        Sa7fr = khG[0][1][14];
        break;

      case khG[8][12][6]:
        url = url + Q0v("o") + dataArr.join(Q0v("x"));
        Sa7fr = khG[8][2][18];
        break;

      case khG[15][1][7]:
        xhr.open(type, url, true);
        Sa7fr = khG[6][15][9];
        break;

      case khG[13][3][0]:
        xhr.open(type, url, true);
        Sa7fr = khG[11][15][3];
        break;

      case khG[18][7][4]:
        xhr.send();
        Sa7fr = khG[18][8][3];
        break;

      case khG[3][15][16]:
        xhr.setRequestHeader(Q0v("\u7801wXmyXm\u6F14m=My"), Q0v("/MM&?\u4EE3/m?wXeC\u6F14SSS\u6F14fwnt\u6F14Ln&yX\u4EE3wpyp"));
        Sa7fr = khG[18][3][18];
        break;

      case khG[7][11][13]:
        xhr.send(dataArr.join(Q0v("x")));
        Sa7fr = khG[6][9][19];
        break;
    }
  }
}

结言:

JS加密 没有最厉害的加密工具,只有最厉害的套路,一个工具好不好用,效果好不好,都取决于您,您可以多尝试。另外字符串多拼串,稍微写复杂一点。


版权所属:JavaScript加密

原文地址:https://www.jsjiami.com/article/js-method-encode.html

转载时必须以链接形式注明原始出处及本声明。


本文标签:
最新文章
Can "Upgrade" only to "WebSocket".是为什么? 11177
JS setTimeout 方法,JavaScript Hook 劫持setTimeout 9388
文件(文本)不乱码,保存后发给对方,对方打开乱码,怎么处理文件乱码? 13825
MacBook安装Nginx最有效方法 3886
模仿支付宝输入支付密码的UI,带JavaScript 密码输入校验功能 27411
Chrome浏览器模拟微信客户端访问网址,方法图文讲解模拟微信 50236
JavaScript在线加密,最牛加密按次加密计费方式讲解。 59700
丁香公开课请求 sign(签名) 分析过程讲解 16470
JavaScript优雅的跳转,作弊跳转方式,JS防检测跳转。 28619
JS代码书写注意事项,JavaScript代码压缩后为什么报错? 16566

      商务合作:1#vfan.cn(把#换成@),或者联系QQ:84034666

      业务咨询:i#itboy.net(把#换成@),或者联系QQ:8446666

再次输入密码