前端开发必要会的,在线JS混淆加密

Shaman官网地址是:www.jshaman.com

官网截图:

1、免费JS加密

JS代码加密功能清单:

  1. 局部变量混淆
  2. 正则表达式标准化
  3. JSON对象标准化
  4. 数值转二进制表达式
  5. 布尔值一元式化
  6. 字符串Unicode化
  7. 字符串颠倒

这些功能均为免费提供。

加密效果:

2、更多免费功能

您可以在免费JS加密工具的界面上看到一系列扩展功能链接,这些链接提供了更多实用的免费辅助功能。

或者:

免费JS加密工具的界面顶部设有一排快捷入口,方便您快速访问其他丰富的免费功能。

3、JS加密:U 加密

"U加密"是一种基于编码的JavaScript代码保护方案,其核心原理是将原始JS代码进行分段处理并转换为Unicode编码格式,最终以加密数组的形式存储。

这种技术使源代码完全转化为密文形态,运行时通过eval函数动态解码执行。由于加密后的特征表现为大量"u"字符前缀(Unicode编码标识),故得名"U加密"。

JShaman开源的JS加密工具地址

线上直接用

"U加密"采用独特的双重安全机制:

  1. 预处理阶段:将JS脚本分解为代码片段
  2. 加密阶段:对每个片段进行Unicode序列化
  3. 存储阶段:以密文数组形式保存
  4. 执行阶段:通过动态解码器实时还原 其显著的"uXXXX"编码特征既确保了代码不可读性,又形成了独特的技术标识。
js 复制代码
(function (){
    var domain = "jshaman.com";
    var from_year = 2017;
    var copyright = function(){
        return "(c)" + from_year + "-" + (new Date).getFullYear() + "," + domain;
    };
    var console_log = console.log;
    console_log(copyright())
})();

加密后:

js 复制代码
var u=[`\u0028\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e`,`\u0028\u0029\u007b`,`\u0076\u0061\u0072`,`\u0064\u006f\u006d\u0061\u0069\u006e`,`\u0022\u006a\u0073\u0068\u0061\u006d\u0061\u006e\u002e\u0063\u006f\u006d\u0022\u003b`,`\u0066\u0072\u006f\u006d\u005f\u0079\u0065\u0061\u0072`,`\u0032\u0030\u0031\u0037\u003b`,`\u0063\u006f\u0070\u0079\u0072\u0069\u0067\u0068\u0074`,`\u0066\u0075\u006e\u0063\u0074\u0069\u006f\u006e\u0028\u0029\u007b`,`\u0072\u0065\u0074\u0075\u0072\u006e`,`\u0022\u0028\u0063\u0029\u0022`,`\u0022\u002d\u0022`,`\u0028\u006e\u0065\u0077`,`\u0044\u0061\u0074\u0065\u0029\u002e\u0067\u0065\u0074\u0046\u0075\u006c\u006c\u0059\u0065\u0061\u0072\u0028\u0029`,`\u0022\u002c\u0022`,`\u0064\u006f\u006d\u0061\u0069\u006e\u003b`,`\u0063\u006f\u006e\u0073\u006f\u006c\u0065\u005f\u006c\u006f\u0067`,`\u0063\u006f\u006e\u0073\u006f\u006c\u0065\u002e\u006c\u006f\u0067\u003b`,`\u0063\u006f\u006e\u0073\u006f\u006c\u0065\u005f\u006c\u006f\u0067\u0028\u0063\u006f\u0070\u0079\u0072\u0069\u0067\u0068\u0074\u0028\u0029\u0029`,`\u007d\u0029\u0028\u0029\u003b`];var u2=[0,1,2,3,5,7,9,11,13,14,15,19,21,22,24,26,29,31,32,33];var u3=`u6[0] u6[1]u6[2] u6[3] = u6[5]u6[2] u6[7] = u6[9]u6[2] u6[11] = u6[13]u6[14] u6[15] + u6[7] + u6[19] + u6[21] u6[22] + u6[24] + u6[26]};u6[2] u6[29] = u6[31]u6[32]u6[33]`;for(u5=0; u5<u.length; u5++){u3 = u3.replace(new RegExp("u6\\["+u2[u5]+"\\]","g"), u[u5].replace("`","").replace("`",""));}eval(u3);

4、JS加密:欧零加密

地址

"碎片化阵列加密" ------ 一种基于词法拆解的JavaScript混淆技术:

核心原理:

  1. 词法解析:将源代码按语法单元(标识符/运算符/字面量等)拆解为碎片
  2. 密文存储:所有代码片段以乱序形式存入加密数组
  3. 动态重构 :通过eval执行时按特定算法重组数组元素

典型特征:

javascript 复制代码
// 加密后形态示例
const _0x=[ "function", "(){", "console.log", "Hello" ];
eval(_0x[0]+_0x[1]+_0x[3]+")");

技术优势:

  • 实现词法级混淆(比普通压缩更安全)
  • 保持精确还原性(无执行误差)
  • 对抗自动化调试(无法直接断点跟踪)

(适用于需要轻量级保护的场景)

js 复制代码
(function (){
    var domain = "jshaman.com";
    var from_year = 2017;
    var copyright = function(){
        return "(c)" + from_year + "-" + (new Date).getFullYear() + "," + domain;
    };
    var console_log = console.log;
    console_log(copyright())
})();
js 复制代码
(function(){let e = eval;let x = "(_o_____o_2 (){_o__0__o_____o_0 _o_____o_3 = _0__0__o_____o_4._o_____o_5_0__0_;_o_____o_0 _o_____o_6__o_____o_7 = _o_____o_8;_o_____o_0 _o_____o_9 = _o_____o_2(){_o__0__o_____o_10 _0__0_(_o_____o_11)_0__0_ + _o_____o_6__o_____o_7 + _0__0_-_0__0_ + (_o_____o_12 _o_____o_13)._o_____o_14() + _0__0_,_0__0_ + _o_____o_3;};_o_____o_0 _o_____o_1__o_____o_15 = _o_____o_1._o_____o_15;_o_____o_1__o_____o_15(_o_____o_9())_o__0_})();";let z = "";[["_9__6_","\\"] , ["_o__0_","\n"] , ["_0__0_","\""] , ["_0___o_","'"]].map(function(z){  x = x.replace(RegExp(z[0], "g"), z[1]);});z = "var,console,function,domain,jshaman,com,from,year,2017,copyright,return,c,new,Date,getFullYear,log".split(",");let y = z.length - 1;while(y > -1){  x = x.replace(RegExp("_o_____o_" + y, "g"), z[y]);  y--;}e(x);}())

5、32进制加密

地址

"进制编码加密" ------ 一种基于数值进制转换的JS关键字混淆技术

加密原理

  1. 字符转换 :将JS关键字(如eval/alert)每个字母转换为ASCII码
  2. 进制编码 :使用(数字).toString(32)将ASCII码转为32进制字符串
  3. 动态拼接:运行时重组这些进制编码字符串还原原始函数名

加密示例

javascript 复制代码
// 原始代码
eval(alert(1));

// 加密后形态(32进制编码)
eval(
  (10).toString(32) + // a
  (21).toString(32) + // l
  (14).toString(32) + // e
  (27).toString(32) + // r
  (29).toString(32)   // t
  + "(1)"
);

技术特点

  • 关键字隐藏:核心API名称被替换为数值表达式
  • 抗格式化:无法通过代码美化还原原始名称
  • 可控强度:可调整进制基数(16/32/36等)

6、html加密

html加密

html 复制代码
<html>
    <head><title>测试</title></head>
    <body>
        <h1>Html源码加密</h1>
        <script>
            alert("加密测试");
        </script>
    </body>
</html>

加密

js 复制代码
<script>
function decodeUnicodeEntities(encodedStr){
return encodedStr.replace(/&#x([0-9a-fA-F]+);/g, function(match, hexValue){
return String.fromCharCode(parseInt(hexValue, 16));
});
}
let encodedString = "<html> <head><title>测试</title></head> <body> <h1>Html源码加密</h1> <script> alert("加密测试"); </script> </body> </html> ";
let decodedString = decodeUnicodeEntities(encodedString);
document.write(decodedString);
</script>

7、JSON 加密

js 复制代码
{
    key1: [true, false, null],
    //comment
    "\u006B\u0065\u0079\u0032": {
        "key2Sub": [1, 1.2, 2, "3", 1e10, 1e-3]
    },
    "key3": false,
    "key4": "jshaman.com"
}

加密

js 复制代码
{"\u006B\u0065\u0079\u0031":[!![],![],null],"\u006B\u0065\u0079\u0032":{"\u006B\u0065\u0079\u0032\u0053\u0075\u0062":[456093^456092,1.2,950527^950525,"\u0033",1e10,1e-3]},"\u006B\u0065\u0079\u0033":![],"\u006B\u0065\u0079\u0034":"\u006A\u0073\u0068\u0061\u006D\u0061\u006E\u002E\u0063\u006F\u006D"}
  • JSON对像Key值标准化、
  • 字符串Unicode化、
  • 数值字面量转二元表达式、
  • 布尔字面量转一元表达

JS代码中的JSON对像,或JS加载的单独外部JSON文件,都可进行加密。 加密后的JSON,可以直接使用,与加密前一样。

8、前端 js 语法标准化

将前端浏览器,特有的语法,进行标准化、统一化处理。

例如:alert、console转化为:window.alert、window.console。

地址

理由:

  • 统一规范化之后,

  • 源码更工整,

  • 易维护。

  • 利于JS代码混淆加密:

例子:如仅对此一句代码加密,由于它会被示例全局顶层函数,出于代码稳定性考虑,通常是无法进行加密的。

它不利于混淆加密,混淆加密后的代码中,仍然显示为alert

而alert是浏览器对象模型,可以显示的将其写为window.alert(1)

如此它便成了window的成员函数调用方式,便可进行加密,

加密后代码中,将不会出现alert字符串。

9、js 转 Unicode

地址

将字串转化为Unicode转义序列形式。 可用来eval等语句结合,实现代码加密反调试

例如,定义变量key的值为123:"var key = 123;" 转化为Unicode形式为:

\u0076\u0061\u0072\u0020\u006b\u0065\u0079\u0020\u003d\u0020\u0031\u0032\u0033\u003b\u000a

如果此时用Eval执行,并用console.log输出变量key的值:

eval("\u0076\u0061\u0072\u0020\u006b\u0065\u0079\u0020\u003d\u0020\u0031\u0032\u0033\u003b\u000a"); console.log(key)

变量的值可以正常输出为123, 但从代码中看不到"key"的定义,也无法通过调试找到"key"。 这样就起到了对变量名的保护。

可用于加密敏感信息相关的变量名某些前端算法的密钥,等等。

不仅仅是字符串代码也可以。

10、new 表达式加密

地址

"构造器隐写加密" ------ 一种针对new操作符的轻量级混淆方案

技术实现

  1. 构造器转译

    • new Date()转换为[Date][0]()
    • new Object()转换为(Object,Array,RegExp)[1]()
  2. 动态代理模式

    javascript 复制代码
    // 原始代码  
    const now = new Date();  
    
    // 加密变体A(数组索引式)  
    const now = [Date, Object, RegExp][0]();  
    
    // 加密变体B(逗号表达式式)  
    const now = (RegExp, Object, Date)();  

核心优势

  • 语法隐身 :消除new关键字特征
  • 执行等价 :保持原型链完整性(instanceof检测正常)
  • 防御性编程:有效对抗自动化代码扫描

(适用于需要隐藏对象实例化特征的业务场景)

11、浏览器 Eval 加密

地址

js机密为Base64编码。

evalatob解密。

总结

这是一个多功能前端开发工具集,主要包含两大类别功能:

  1. 代码安全相关工具

    • JS/CSS格式化(美化/压缩)
    • JS代码混淆加密(含AAEncode等特殊加密)
    • TypeScript转JavaScript编译
  2. 开发辅助工具

    • 随机密码生成器
    • 二维码生成器
    • HTML压缩优化

(所有工具均为免费提供,兼顾代码安全防护和日常开发效率提升)

或者更简洁的版本:
集成前端开发工具箱,涵盖代码安全防护(JS加密/格式化)、实用工具(二维码/密码生成)、语言转换(TS→JS)等多元化功能。

相关推荐
爱生活的苏苏11 分钟前
vue生成二维码图片+文字说明
前端·vue.js
拉不动的猪13 分钟前
安卓和ios小程序开发中的兼容性问题举例
前端·javascript·面试
炫彩@之星19 分钟前
Chrome书签的导出与导入:步骤图
前端·chrome
贩卖纯净水.30 分钟前
浏览器兼容-polyfill-本地服务-优化
开发语言·前端·javascript
前端百草阁36 分钟前
从npm库 Vue 组件到独立SDK:打包与 CDN 引入的最佳实践
前端·vue.js·npm
夏日米米茶37 分钟前
Windows系统下npm报错node-gyp configure got “gyp ERR“解决方法
前端·windows·npm
且白1 小时前
vsCode使用本地低版本node启动配置文件
前端·vue.js·vscode·编辑器
程序研1 小时前
一、ES6-let声明变量【解刨分析最详细】
前端·javascript·es6
siwangqishiq22 小时前
Vulkan Tutorial 教程翻译(四) 绘制三角形 2.2 呈现
前端
李三岁_foucsli2 小时前
js中消息队列和事件循环到底是怎么个事,宏任务和微任务还存在吗?
前端·chrome