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

1、免费JS加密

JS代码加密功能清单:
- 局部变量混淆
- 正则表达式标准化
- JSON对象标准化
- 数值转二进制表达式
- 布尔值一元式化
- 字符串Unicode化
- 字符串颠倒
这些功能均为免费提供。
加密效果:

2、更多免费功能
您可以在免费JS加密工具的界面上看到一系列扩展功能链接,这些链接提供了更多实用的免费辅助功能。
或者:
免费JS加密工具的界面顶部设有一排快捷入口,方便您快速访问其他丰富的免费功能。


3、JS加密:U 加密
"U加密"是一种基于编码的JavaScript代码保护方案,其核心原理是将原始JS代码进行分段处理并转换为Unicode编码格式,最终以加密数组的形式存储。
这种技术使源代码完全转化为密文形态,运行时通过eval函数动态解码执行。由于加密后的特征表现为大量"u"字符前缀(Unicode编码标识),故得名"U加密"。
"U加密"采用独特的双重安全机制:
- 预处理阶段:将JS脚本分解为代码片段
- 加密阶段:对每个片段进行Unicode序列化
- 存储阶段:以密文数组形式保存
- 执行阶段:通过动态解码器实时还原 其显著的"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混淆技术:
核心原理:
- 词法解析:将源代码按语法单元(标识符/运算符/字面量等)拆解为碎片
- 密文存储:所有代码片段以乱序形式存入加密数组
- 动态重构 :通过
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关键字混淆技术
加密原理
- 字符转换 :将JS关键字(如
eval
/alert
)每个字母转换为ASCII码 - 进制编码 :使用
(数字).toString(32)
将ASCII码转为32进制字符串 - 动态拼接:运行时重组这些进制编码字符串还原原始函数名
加密示例
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>
<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
操作符的轻量级混淆方案
技术实现
-
构造器转译:
- 将
new Date()
转换为[Date][0]()
- 将
new Object()
转换为(Object,Array,RegExp)[1]()
- 将
-
动态代理模式:
javascript// 原始代码 const now = new Date(); // 加密变体A(数组索引式) const now = [Date, Object, RegExp][0](); // 加密变体B(逗号表达式式) const now = (RegExp, Object, Date)();
核心优势
- 语法隐身 :消除
new
关键字特征 - 执行等价 :保持原型链完整性(
instanceof
检测正常) - 防御性编程:有效对抗自动化代码扫描
(适用于需要隐藏对象实例化特征的业务场景)
11、浏览器 Eval 加密
将js
机密为Base64
编码。
用eval
、atob
解密。
总结
这是一个多功能前端开发工具集,主要包含两大类别功能:
-
代码安全相关工具
- JS/CSS格式化(美化/压缩)
- JS代码混淆加密(含AAEncode等特殊加密)
- TypeScript转JavaScript编译
-
开发辅助工具
- 随机密码生成器
- 二维码生成器
- HTML压缩优化
(所有工具均为免费提供,兼顾代码安全防护和日常开发效率提升)
或者更简洁的版本:
集成前端开发工具箱,涵盖代码安全防护(JS加密/格式化)、实用工具(二维码/密码生成)、语言转换(TS→JS)等多元化功能。