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

Javascript 核心方法加密介绍:

JS方法加密工具地址:Javascript方法加密,JS核心代码加密,JS不可逆加密 - [JavaScript加密]

优点:

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值