JS加密入门之控制流平坦化2

JS混淆加密是一种将JavaScript代码进行混淆和加密的技术,旨在使代码更难以阅读和理解,从而增加破解难度。控制流平坦化是其中一种常用的混淆技术,它可以使代码的控制流程变得非常复杂,增加代码的可读性和可维护性的难度。下面是一个使用控制流平坦化进行混淆加密的示例代码:

javascriptCopy codefunction encrypt(text) {
    
    
  var encrypted = "";
  for (var i = 0; i < text.length; i++) {
    
    
    var code = text.charCodeAt(i);
    var newCode = code + 10;
    encrypted += String.fromCharCode(newCode);
  }
  return encrypted;
}

function decrypt(encrypted) {
    
    
  var decrypted = "";
  for (var i = 0; i < encrypted.length; i++) {
    
    
    var code = encrypted.charCodeAt(i);
    var newCode = code - 10;
    decrypted += String.fromCharCode(newCode);
  }
  return decrypted;
}

var input = "Hello World!";
var encrypted = encrypt(input);
var decrypted = decrypt(encrypted);
console.log(decrypted);

以上代码可以加密和解密一个字符串,但是它非常容易被破解,因为加密和解密的过程都是固定的,没有任何随机性和变化。为了增加代码的破解难度,我们可以使用控制流平坦化技术,如下所示:

javascriptCopy codefunction encrypt(text) {
    
    
  var encrypted = "";
  var a = Math.floor(Math.random() * 10);
  if (a == 0) {
    
    
    for (var i = 0; i < text.length; i++) {
    
    
      var code = text.charCodeAt(i);
      var newCode = code + 10;
      encrypted += String.fromCharCode(newCode);
    }
  } else if (a == 1) {
    
    
    for (var i = 0; i < text.length; i++) {
    
    
      var code = text.charCodeAt(i);
      var newCode = code + 20;
      encrypted += String.fromCharCode(newCode);
    }
  } else if (a == 2) {
    
    
    for (var i = 0; i < text.length; i++) {
    
    
      var code = text.charCodeAt(i);
      var newCode = code + 30;
      encrypted += String.fromCharCode(newCode);
    }
  } else if (a == 3) {
    
    
    for (var i = 0; i < text.length; i++) {
    
    
      var code = text.charCodeAt(i);
      var newCode = code + 40;
      encrypted += String.fromCharCode(newCode);
    }
  } else if (a == 4) {
    
    
    for (var i = 0; i < text.length; i++) {
    
    
      var code = text.charCodeAt(i);
      var newCode = code + 50;
      encrypted += String.fromCharCode(newCode);
    }
  } else if (a == 5) {
    
    
    for (var i = 0; i < text.length; i++) {
    
    
      var code = text.charCodeAt(i);
      var newCode = code + 60;
      encrypted += String.fromCharCode(newCode);
    }
  } else if (a == 6) {
    
    
    for (var i = 0; i < text.length; i++) {
    
    

jsjiami.com

如果您对文章内容有不同看法,或者疑问,欢迎到评论区留言,或者私信我都可以。

也可以到上方网站,底部有我联系方式详谈

如遇自己源码加密后没备份,可以找我们解决解出恢复源码,任何加密都可以。

猜你喜欢

转载自blog.csdn.net/mxd01848/article/details/130052860