package blog.csdn.net.cxy1238.jsencoder;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
/**
* JS加密器
* @author 陈星宇 cxy-1238@163.com
* http://blog.csdn.net/cxy1238
*/
public class JSEncodeHelper {
/**
* JAVASCRIPT加密
* @param inputJS 需要加密的JS代码
* @return 加密后的JS代码
* @throws Exception
*/
public static String encoder(String inputJS) throws Exception
{
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine jsEngine;
//js引擎
jsEngine = manager.getEngineByExtension("js");
try {
jsEngine.put("inputhtml", inputJS);
jsEngine.eval(getEncodeVer());
jsEngine.eval("encode()");
if("true".equals(jsEngine.get("runstatus").toString()))
{
return jsEngine.get("outputhtml").toString();
}
} catch (ScriptException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
* 加密器核心代码
* @return
*/
private final static String getEncodeVer()
{
StringBuffer strb=new StringBuffer();
strb.append("var l=function(x)");
strb.append("\n");
strb.append("{");
strb.append("\n");
strb.append("return String.fromCharCode(x);");
strb.append("\n");
strb.append("}");
strb.append("\n");
strb.append("O=function(m)");
strb.append("\n");
strb.append("{");
strb.append("\n");
strb.append("return String.fromCharCode(Math.floor(m/10000)/99);");
strb.append("\n");
strb.append("} ");
strb.append("\n");
strb.append("var runstatus = false;");
strb.append("\n");
strb.append("var encodedrv = \"Olllll=\\\"(\\\";OOOlll=\\\")\\\";OOOOll=\\\" \\\";OOllll=\\\"x\\\";OOOOOl=\\\"r\\\";OOOOOOOll=\\\"S\\\";OOOOOO=\\\"i\\\";OOOOlOOll=\\\"t\\\";OOOOOOO=\\\"n\\\";OOOOOlll=\\\"i\\\";OOOOOOOO=\\\"g\\\";lllOllll=\\\"o\\\";OOOOOOll=\\\"t\\\";OOOOllll=\\\"o\\\";OOOlllll=\\\"n\\\";llllOlll=\\\"d\\\";lllllOll=\\\"e\\\";llOlllll=\\\"C\\\";lllllOOl=\\\"x\\\";llllOOll=\\\")}\\\";lllOOlll=\\\"C\\\";llOOllll=\\\"h\\\";llllllOl=\\\"(\\\";lOOlllll=\\\"a\\\";LOOOllll=\\\"r\\\";lllOOOll=\\\"n\\\";llOOOlll=\\\"f\\\";lOOOllll=\\\"u\\\";llllOOOl=\\\"c\\\";OOllllll=\\\"f\\\";llOOOOll=\\\".\\\";lllOOOOl=\\\" l = \\\";lOOOOlll=\\\"r\\\";lOOOOOll=\\\"o\\\";llOOOOOl=\\\"m\\\";lOOOOOOl=\\\"{r\\\";llOOOOOOl=\\\"e\\\";lOlOOOOOl=\\\"t\\\";lOOlOOOOl=\\\"u\\\";lOOOlOOOl=\\\"r\\\";lOOOOlOOl=\\\"n\\\";lOOOOOlOl=\\\"v\\\";lOOOOOOll=\\\"a\\\";lOOOOOLll=\\\"r\\\";eval(lOOOOOlOl+lOOOOOOll+lOOOOOLll+lllOOOOl+llOOOlll+lOOOllll+lllOOOll+llllOOOl+OOOOOOll+OOOOOlll+OOOOllll+OOOlllll+Olllll+OOllll+OOOlll+lOOOOOOl+llOOOOOOl+lOlOOOOOl+lOOlOOOOl+lOOOlOOOl+lOOOOlOOl+OOOOll+OOOOOOOll+OOOOlOOll+OOOOOl+OOOOOO+OOOOOOO+OOOOOOOO+llOOOOll+OOllllll+lOOOOlll+lOOOOOll+llOOOOOl+lllOOlll+llOOllll+lOOlllll+LOOOllll+llOlllll+lllOllll+llllOlll+lllllOll+llllllOl+lllllOOl+llllOOll);eval(l(79)+l(61)+l(102)+l(117)+l(110)+l(99)+l(116)+l(105)+l(111)+l(110)+l(40)+l(109)+l(41)+l(123)+l(114)+l(101)+l(116)+l(117)+l(114)+l(110)+l(32)+l(83)+l(116)+l(114)+l(105)+l(110)+l(103)+l(46)+l(102)+l(114)+l(111)+l(109)+l(67)+l(104)+l(97)+l(114)+l(67)+l(111)+l(100)+l(101)+l(40)+l(77)+l(97)+l(116)+l(104)+l(46)+l(102)+l(108)+l(111)+l(111)+l(114)+l(40)+l(109)+l(47)+l(49)+l(48)+l(48)+l(48)+l(48)+l(41)+l(47)+l(57)+l(57)+l(41)+l(59)+l(125));\";");
strb.append("\n");
strb.append("function addonum(i)");
strb.append("\n");
strb.append("{");
strb.append("\n");
strb.append("encodenum = inputhtml.charCodeAt(i) * 990000 + Math.floor(Math.random()*10000);");
strb.append("\n");
strb.append("outputhtml += \"+O(\" + encodenum + \")\";");
strb.append("\n");
strb.append("if(i==codesize-1)");
strb.append("\n");
strb.append("{result()}");
strb.append("\n");
strb.append("i += 1;");
strb.append("\n");
strb.append("if(i<codesize)");
strb.append("\n");
strb.append("{");
strb.append("\n");
strb.append("addonum(i);}");
strb.append("\n");
strb.append("}");
strb.append("\n");
strb.append("function result()");
strb.append("\n");
strb.append("{");
strb.append("\n");
strb.append("outputhtml = \"eval(\\\"\\\"\" + outputhtml + \");\";");
strb.append("\n");
strb.append("outputhtml = encodedrv + outputhtml;");
strb.append("\n");
strb.append("runstatus = true;");
strb.append("\n");
strb.append("}");
strb.append("\n");
strb.append("function encode()");
strb.append("\n");
strb.append("{");
strb.append("\n");
strb.append("codesize = inputhtml.length;");
strb.append("\n");
strb.append("outputhtml = \"\";");
strb.append("\n");
strb.append("if(inputhtml==\"\")");
strb.append("\n");
strb.append("{");
strb.append("\n");
strb.append("return;");
strb.append("\n");
strb.append("}");
strb.append("\n");
strb.append("if(inputhtml.indexOf(\"l(111)+l(111)+l(114)\")!=-1)");
strb.append("\n");
strb.append("{");
strb.append("\n");
strb.append("return;");
strb.append("\n");
strb.append("}");
strb.append("\n");
strb.append("addonum(0);");
strb.append("\n");
strb.append("}");
strb.append("\n");
return strb.toString();
}
}
- 1
- 2
前往页