JJ加密解密算法
加密函数
function jjencode(text ) {
var r="";
var n;
var t;
var b=[ "___", "__$", "_$_", "_$$", "$__", "$_$", "$$_", "$$$", "$___", "$__$", "$_$_", "$_$$", "$$__", "$$_$", "$$$_", "$$$$", ];
var gv='fpa'
var s = "";
for( var i = 0; i < text.length; i++ ){
n = text.charCodeAt( i );
if( n == 0x22 || n == 0x5c ){
s += "\\\\\\" + text.charAt( i ).toString(16);
}else if( (0x21 <= n && n <= 0x2f) || (0x3A <= n && n <= 0x40) || ( 0x5b <= n && n <= 0x60 ) || ( 0x7b <= n && n <= 0x7f ) ){
//}else if( (0x20 <= n && n <= 0x2f) || (0x3A <= n == 0x40) || ( 0x5b <= n && n <= 0x60 ) || ( 0x7b <= n && n <= 0x7f ) ){
s += text.charAt( i );
}else if( (0x30 <= n && n <= 0x39 ) || (0x61 <= n && n <= 0x66 ) ){
if( s ) r += "\"" + s +"\"+";
r += gv + "." + b[ n < 0x40 ? n - 0x30 : n - 0x57 ] + "+";
s="";
}else if( n == 0x6c ){ // 'l'
if( s ) r += "\"" + s + "\"+";
r += "(![]+\"\")[" + gv + "._$_]+";
s = "";
}else if( n == 0x6f ){ // 'o'
if( s ) r += "\"" + s + "\"+";
r += gv + "._$+";
s = "";
}else if( n == 0x74 ){ // 'u'
if( s ) r += "\"" + s + "\"+";
r += gv + ".__+";
s = "";
}else if( n == 0x75 ){ // 'u'
if( s ) r += "\"" + s + "\"+";
r += gv + "._+";
s = "";
}else if( n < 128 ){
if( s ) r += "\"" + s;
else r += "\"";
r += "\\\\\"+" + n.toString( 8 ).replace( /[0-7]/g, function(c){ return gv + "."+b[ c ]+"+" } );
s = "";
}else{
if( s ) r += "\"" + s;
else r += "\"";
r += "\\\\\"+" + gv + "._+" + n.toString(16).replace( /[0-9a-f]/gi, function(c){ return gv + "."+b[parseInt(c,16)]+"+"} );
s = "";
}
}
if( s ) r += "\"" + s + "\"+";
r =
gv + "=~[];" +
gv + "={___:++" + gv +",$$$$:(![]+\"\")["+gv+"],__$:++"+gv+",$_$_:(![]+\"\")["+gv+"],_$_:++"+
gv+",$_$$:({}+\"\")["+gv+"],$$_$:("+gv+"["+gv+"]+\"\")["+gv+"],_$$:++"+gv+",$$$_:(!\"\"+\"\")["+
gv+"],$__:++"+gv+",$_$:++"+gv+",$$__:({}+\"\")["+gv+"],$$_:++"+gv+",$$$:++"+gv+",$___:++"+gv+",$__$:++"+gv+"};"+
gv+".$_="+
"("+gv+".$_="+gv+"+\"\")["+gv+".$_$]+"+
"("+gv+"._$="+gv+".$_["+gv+".__$])+"+
"("+gv+".$$=("+gv+".$+\"\")["+gv+".__$])+"+
"((!"+gv+")+\"\")["+gv+"._$$]+"+
"("+gv+".__="+gv+".$_["+gv+".$$_])+"+
"("+gv+".$=(!\"\"+\"\")["+gv+".__$])+"+
"("+gv+"._=(!\"\"+\"\")["+gv+"._$_])+"+
gv+".$_["+gv+".$_$]+"+
gv+".__+"+
gv+"._$+"+
gv+".$;"+
gv+".$$="+
gv+".$+"+
"(!\"\"+\"\")["+gv+"._$$]+"+
gv+".__+"+
gv+"._+"+
gv+".$+"+
gv+".$$;"+
gv+".$=("+gv+".___)["+gv+".$_]["+gv+".$_];"+
gv+".$("+gv+".$("+gv+".$$+\"\\\"\"+" + r + "\"\\\"\")())();";
return r;
}
加密示范
jjencode('alert("hello")')
加密结果
fpa=~[];fpa={___:++fpa,$$$$:(![]+"")[fpa],__$:++fpa,$_$_:(![]+"")[fpa],_$_:++fpa,$_$$:({}+"")[fpa],$$_$:(fpa[fpa]+"")[fpa],_$$:++fpa,$$$_:(!""+"")[fpa],$__:++fpa,$_$:++fpa,$$__:({}+"")[fpa],$$_:++fpa,$$$:++fpa,$___:++fpa,$__$:++fpa};fpa.$_=(fpa.$_=fpa+"")[fpa.$_$]+(fpa._$=fpa.$_[fpa.__$])+(fpa.$$=(fpa.$+"")[fpa.__$])+((!fpa)+"")[fpa._$$]+(fpa.__=fpa.$_[fpa.$$_])+(fpa.$=(!""+"")[fpa.__$])+(fpa._=(!""+"")[fpa._$_])+fpa.$_[fpa.$_$]+fpa.__+fpa._$+fpa.$;fpa.$$=fpa.$+(!""+"")[fpa._$$]+fpa.__+fpa._+fpa.$+fpa.$$;fpa.$=(fpa.___)[fpa.$_][fpa.$_];fpa.$(fpa.$(fpa.$$+"\""+fpa.$_$_+(![]+"")[fpa._$_]+fpa.$$$_+"\\"+fpa.__$+fpa.$$_+fpa._$_+fpa.__+"(\\\"\\"+fpa.__$+fpa.$_$+fpa.___+fpa.$$$_+(![]+"")[fpa._$_]+(![]+"")[fpa._$_]+fpa._$+"\\\")"+"\"")())();
解密函数
function jjdecode(text) {
var output = '';
var g = text.match(/([^=])=~\[\];/)[1];
// Building my scope
var lines = text.match(/([^;]*);/g);
var lookAhead = false;
var finalLine = '';
for(var i in lines) {
if ( ! lines[i].match(/_.\$\(_.\$\(/) && ! lookAhead) {
eval(lines[i]);
} else {
lookAhead = true;
finalLine = finalLine + lines[i];
if (i == lines.length - 1) {
// _.\$\((.*)(\)\(\))
var re = new RegExp(g + '.\\$\\((.*)(\\)\\(\\))');
var reString = finalLine.match(re);
output = eval(reString[1]);
}
}
}
console.log(eval(g));
return output;
}
本文来自博客园,作者:HumorChen99,转载请注明原文链接:https://www.cnblogs.com/HumorChen/p/18039733
分类:
加解密&&密码学
, JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~