JAVA中直接写JS代码

近期公司需要挖某网站的数据, 需要模拟登陆,他们的加密方式有点复杂, 不好转java. 研究了下,就直接在java代码里面用他们的加密js代码,这里只贴java中运用的js代码:


 /**
    *  加密用户名密码 
    *
    * */
   private static String  testJSFile(String input) throws Exception {   
   
    ScriptEngineManager manager = new ScriptEngineManager();   
    ScriptEngine engine = manager.getEngineByName("javascript");     
    String c=null;
    try {
    engine.eval("var keyStr='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';function encodeInp(input){var output='';var chr1,chr2,chr3='';var enc1,enc2,enc3,enc4='';var i=0;do{chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64}else{if(isNaN(chr3)){enc4=64}}output=output+keyStr.charAt(enc1)+keyStr.charAt(enc2)+keyStr.charAt(enc3)+keyStr.charAt(enc4);chr1=chr2=chr3='';enc1=enc2=enc3=enc4=''}while(i<input.length);return output};");

} catch (Exception e) {
e.printStackTrace();
}
    if(engine instanceof Invocable) {    
    Invocable invoke = (Invocable)engine;    
    c = (String)invoke.invokeFunction("encodeInp",input);    


    System.out.println("c = " + c);   
    }
return c;   
   

   

   }

猜你喜欢

转载自blog.csdn.net/AVGworkld/article/details/73480161