首页 > 其他分享 >用一个小故事来揭秘js加密的神秘面纱

用一个小故事来揭秘js加密的神秘面纱

时间:2023-05-18 19:32:24浏览次数:31  
标签:substitutionMap 加密 jotjef js char xjui jnbhf let 揭秘

在夜幕降临的时刻,当人们聚集在一起分享民间鬼故事的时候,总有一种神秘的氛围弥漫在空气中。而今天,我将与你分享一个不同寻常的民间鬼故事,这个故事中隐藏着一段神秘的JS加密代码,让我们一起揭开它背后的魔法!

这个鬼故事发生在一个古老的村庄,传说中有一个被诅咒的房子,据说住在那里的人会受到恶魔的困扰。有一天,一位勇敢的年轻人,名叫小杰,决定勇闯这个鬼屋,解开其中的谜题。当他进入房间时,他发现了一张古老的纸条,上面写着一段经过JS加密的代码。

那段JS加密代码看起来像这样:

var encryptedMessage = "jotjef!uijol!gps!b!tuspoh!b!fyusfnfou/!jotjef!jnbhf-!jotjef!dpnqfot!uif!dpogfuz-!xjui!jotjef!b!gjstu!hvufo!up!jt!b!jefb;!jotjef!jnbhf-!xjui!jotjef!b!mjof;!jotjef!jnbhf-!xjui!jotjef!b!cfuu;!jotjef!jnbhf-!xjui!jotjef!b!opof;!jotjef!jnbhf-!xjui!jotjef!b!ifbw;!jotjef!jnbhf-!xjui!jotjef!b!mjtu;!jotjef!jnbhf-!xjui!jotjef!b!wpje;!jotjef!jnbhf-!xjui!jotjef!b!usbjo;!jotjef!jnbhf-!xjui!jotjef!b!xf;!jotjef!jnbhf-!xjui!jotjef!b!gmvpsfe;!jotjef!jnbhf-!xjui!jotjef!b!nbmm!jnbhfe;!jotjef!jnbhf-!xjui!jotjef!b!gjstu!jefb;!jotjef!jnbhf-!xjui!jotjef!b!gjstu!ofx;!jotjef!jnbhf-!xjui!jotjef!b!gjstu!gmvpsfe;!jotjef!jnbhf-!xjui!jotjef!“;

小杰紧紧握着那张纸条,心中充满了好奇和刺激。他知道这段加密的JS代码将为他解开鬼屋的谜团提供线索。于是,他开始仔细研究这段代码。

经过一番琢磨,小杰意识到这段加密代码是通过将字母向后移动一位来实现的。于是,他动手修改了代码,将每个字母向前移动一位,并重新运行了程序。

修改后的代码如下所示:

// 创建替换映射表
function createSubstitutionMap(key) {
  let substitutionMap = {};
  for (let i = 0; i < key.length; i++) {
    substitutionMap[String.fromCharCode("a".charCodeAt(0) + i)] = key[i];
  }
  return substitutionMap;
}

// 加密数据
function encryptSubstitution(data, substitutionMap) {
  let encryptedData = "";
  for (let i = 0; i < data.length; i++) {
    let char = data[i];
    if (char.match(/[a-zA-Z]/)) {
      let substitutionChar = substitutionMap[char.toLowerCase()];
      let encryptedChar = char === char.toLowerCase() ? substitutionChar : substitutionChar.toUpperCase();
      encryptedData += encryptedChar;
    } else {
      encryptedData += char;
    }
  }
  return encryptedData;
}

// 解密数据
function decryptSubstitution(encryptedData, substitutionMap) {
  let decryptionMap = {};
  for (let key in substitutionMap) {
    decryptionMap[substitutionMap[key]] = key;
  }
  let decryptedData = "";
  for (let i = 0; i < encryptedData.length; i++) {
    let char = encryptedData[i];
    if (char.match(/[a-zA-Z]/)) {
      let substitutionChar = decryptionMap[char.toLowerCase()];
      let decryptedChar = char === char.toLowerCase() ? substitutionChar : substitutionChar.toUpperCase();
      decryptedData += decryptedChar;
    } else {
      decryptedData += char;
    }
  }
  return decryptedData;
}

如果您对文章内容有不同看法,或者疑问,欢迎到评论区留言,或者私信我、到我们的官网找客服号都可以。

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

用一个小故事来揭秘js加密的神秘面纱_JS安全

用一个小故事来揭秘js加密的神秘面纱_JS混淆_02

标签:substitutionMap,加密,jotjef,js,char,xjui,jnbhf,let,揭秘
From: https://blog.51cto.com/u_15781271/6306699

相关文章

  • mysql加密连接报错处理记录
    一、目前mysql的版本更新的特别快了,那么我们在使用的时候出现navicat连接异常的问题了,原因是因为navicat版本过低导致的。具体是因为:mysql8.0.4为了更安全的连接,默认从mysql_native_password改成了caching_sha2_password了。所以导致很多连接工具连接失败了。这样改......
  • 使用sockjs-client 和 @stomp/stompjs 创建socket,断线重连机制
    importSockClientfrom'sockjs-client'constStomp=require('@stomp/stompjs')//方法createStompClient(){constthat=thisconstws=newSockClient(`/socket/api/socket-mq?access_token=${getToken()}`)this.stom......
  • 泛微CheckServer.jsp注入
    /mobile/plugin/CheckServer.jsp通过urldecode可以绕过泛微waf......
  • nodeJs 常用库之 cross-env
    楔子为什么会注意到这个库呢?起因是因为,在公司的项目package.json看到启动或者编译的命令是这样写的"start":"cross-envNODE_ENV=developmentSERVICE_NAME=testServerneststart","start:dev":"cross-envNODE_ENV=developmentSERVICE_NAME=testServerneststart--......
  • 利用python解析log日志,json文件,配置文件。
    对于喜欢偷懒的我来说,重复同样的工作是很令人头疼的事情,总想找到一条捷径,最好是一劳永逸。本次跟大家分享的是对log日志,json文件以及配置文件的解析,读取。首先是log日志的读写:读取数据:f=open("spring05注意事项.txt",mode='r',encoding='utf-8')line=f.readline()whileline......
  • js下载pdf文件
    //点击下载文件参数href:下载地址,参数filename:文件名(可自定义文件名)```downloadFile(href,fileName){//获取heads中的filename文件名leta=document.createElement("a");a.style.display="none";//给a标签创建下载的链接a.href=href;//下载后文件名a.downloa......
  • JSON
    我们为什么使用JSON代替XML来用于与服务端交换数据?JSON与XML的相同之处:JSON和XML数据都是"自我描述",都易于理解。JSON和XML数据都是有层次的结构JSON和XML数据可以被大多数编程语言使用JSON与XML的不同之处:JSON不需要结束标签JSON更加简短JSON读写......
  • error Resolve error: @vitejs/plugin-vue requires vue (>=3.2.13) or @vue/compile
    创建Vue3项目时出错error Resolveerror:@vitejs/plugin-vuerequiresvue(>=3.2.13)or@vue/compiler-sfctobepresentinthedependencytree将vue 升级到 [email protected]  版本 执行[email protected] ......
  • [SEO知识讲解] 揭秘大批量做“多个关键词快排技巧”
    本文转载自:[SEO知识讲解]揭秘大批量做“多个关键词快排技巧”更多内容请访问钻芒博客:https://www.zuanmang.net做SEO优化的人都知道,同一个关键词如果你排在竞争对手的前面,那么你的机会就更多。网站前期的策划也好,用户体验也好,都需要通过关键词,才能把真正的客户带到网站,变成实实......
  • JS 时间格式化
    1、yyyyMMddHHmmss转yyyy-MM-ddHH:mm:ss格式//时间yyyyMMddHHmmss转yyyy-MM-ddHH:mm:ss格式//参数示例:'20230518000802'functiondateFormat(dateString){if(dateString!=''&&dateString!=null&&dateString!=undefined){......