问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问这种JS代码怎么加密

发布网友 发布时间:2022-03-08 17:06

我来回答

1个回答

热心网友 时间:2022-03-08 18:36

这不算加密,只不过一眼看不出来罢了。其实就是JavaScript字符串转义。

原理很简单,比如字符 ’w‘

它的 charCode 是 119 十六进制表示为 0x77 

然后利用 JavaScript 字符串转义前缀 \x,表达出编码过的 ASCII 字符来:

\x + charCode的十六进制表示(两位)

所以字符串 '\x77' 就是字符串 'w'

也就是说 

'\x77' === 'w'

这个的返回值是 true,二者完全等效!

这是对于 ascii 代码表示形式,charCode 大于 255 的怎么处理?就要用到 \u 前缀了

\u + charCode的十六进制表示(

比如汉字 '学' 的 charCode 是 23398 (0x5b66) 

书写时只要把 0x 替换为 \u:

\u5b66

这样就可以了。

'\u5b66' === '学'

那么为什么要这么麻烦呢?直接输入字符不就好了吗?要知道,有些字符是不能打印或不能被输入的(比如功能/控制字符“退格”等),如果要在字符串中包含这些字符,只能依靠字符串转义了!

回头看楼主给的代码:

"\x64\x6f\x63\x75\x6d\x65\x6e\x74"

这个是什么?

F12开浏览器开发者工具,切到控制台(或者你有 node.js),在控制台输入这一串。

你看到输出什么了吗?

"document"

继续

"\x77\x72\x69\x74\x65\x6c\x6e"

这个输入后,控制台返回

"writeln"

剩下括号内的也是一样的啦。结果是一个指向特定地址的 <a> 标签。

所以翻译过来就是

window['document']['writeln']('<a href="...">标签</a>')

看懂了?

好,既然楼主说要怎么加密的。我就写了个 JS 脚本,只要调用这个方法,你就得到“加密”后的字符串信息了:

function encrypt(str) {
  var result = '', charCode

  for(var i = 0, length = str.length; i < length; i++) {
    charCode = str.charCodeAt(i)
    if(charCode < 0x10) {
      result += '\\x0' + charCode.toString(16)
    } else if(charCode < 0x100) {
      result += '\\x' + charCode.toString(16)
    } else if(charCode < 0x1000) {
      result += '\\u0' + charCode.toString(16)
    }else {
      result += '\\u' + charCode.toString(16)
    }
  }
  return result
}

在控制台执行

encrpty('楼主给的那一串')

返回

"\x3c\x61\x20\x68\x72\x65\x66\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x63\x63\x79\x6d\x6b\x2e\x63\x6f\x6d\x2f\x22\x20\x74\x61\x72\x67\x65\x74\x3d\x22\x5f\x62\x6c\x61\x6e\x6b\x22\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x46\x46\x30\x30\x30\x30\x3b\x22\x3e\x3c\x62\x3e\x43\x43\u6e90\u7801\u8bba\u575b\x3c\x2f\x62\x3e\x3c\x2f\x61\x3e"

楼主只要把括号中的那一串替换为上面输入的内容就好了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... !!!js文件被加密了 ,怎样解密 怎么让js代码在浏览器中加密运行? js 如何加密 如何对JS代码加密 我想让你们给我看下,这个文件是怎么加密JS程序: 如何给JS脚本加密 js文件的加密与调用 请问怎么加密JS文件地址?我知道不能真正加密,只是想伪装一下地址,ASCII转16进制后地址还是太明显, JS文件在发布站点后需要加密 怎么加密 问下 想这样的js文件 是用什么加密的啊 JS文件怎么加密?我有现成的文件要加密!谢谢 如何隐藏或加密js文件或代码,浏览器客户端不可以看到 谁知道.js文件名是怎么加密的? 如何加密 javascript文件 怎么加密js代码? 如何加密js? 什么拖鞋穿久了不会臭? 拖鞋有股臭味怎么去除 为什么拖鞋穿久了会有一股屎臭味 拖鞋穿久了有股臭味.怎么去除 如何将js加密 想做java工程师要学习哪些东西呢,谢谢 恒源祥的纯羊毛衫怎么洗呢? 恒源祥羊毛被怎么清洗 关于洗羊毛衫的问题。买了恒源祥的那种专洗羊毛衣的,可是洗完后有羊毛味而且也发硬 恒源祥羊毛围巾怎么洗 恒源祥衬衣怎样洗 恒源祥的毛衣怎么样? 正品恒源祥羊绒衫洗后缩水吗 买了恒源祥毛衣起球,是质量问题吗, 请问恒源祥的羊毛被能不能水洗。 恒源祥雕绒怎么洗 恒源祥羊毛衫怎么识真假和质量好坏? 怎样辨别恒源祥羊毛衫的真假 请问,沛纳海手表带变黄,要怎么清洗的干净呢? 沛纳海维修中心在哪? 沛纳海手表保修表针怎么办? 怎么给电脑桌面文件加锁 怎么查手机卡流量使用情况? 怎么查手机卡流量