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

文章介绍了JS混淆加密的概念,特别是控制流平坦化技术如何增加代码的复杂性,降低可读性。文中提供了简单的加密解密函数示例,并讨论了如何通过引入随机性来提高代码的破解难度,以增强安全性。
摘要由CSDN通过智能技术生成

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值