当前位置: 首页 > news >正文

网站建设冫首先金手指十五/厉害的seo顾问

网站建设冫首先金手指十五,厉害的seo顾问,辽宁沈阳做网站,网站联系我们怎么做Java执行js加密算法 今日需求:在后端执行一段加密算法,算法是js写的明白需求以后疯狂百度。最后发现JDK提供了各种脚本的支持(怪笔者学艺不精,第一次见识到这个库,留下不学无术的泪水),正题开始,Java如何执…

2641480dbe084fbe924e25aee8ad38ba.png

Java执行js加密算法

今日需求:在后端执行一段加密算法,算法是js写的

明白需求以后疯狂百度。最后发现JDK提供了各种脚本的支持(怪笔者学艺不精,第一次见识到这个库,留下不学无术的泪水),正题开始,Java如何执行一段加密算法呢?

java对脚本的支持全部存放于javax.script包下

接口:BindlingsCompilable Invocable ScriptContext ScriptEngine ScriptEngineFactory 
类:AbstractScriptEngine CompiledScript ScriptEngineManager SimpleBindings SimpleScriptContext 
异常:ScriptException

我们本次使用到的有ScriptEngineManagerScriptEngineInvocable

ScriptEngineManagerScriptEngine 类实现一个发现和实例化机制,还维护一个键/值对集合来存储所有 Manager 创建的引擎所共享的状态。此类使用[服务提供者](../../../technotes/guides/jar/jar.html#Service Provider)机制枚举所有的 ScriptEngineFactory 实现。ScriptEngineManager 提供了一个方法,可以返回一个所有工厂实现和基于语言名称、文件扩展名和 mime 类型查找工厂的实用方法所组成的数组。
键/值对的 Bindings(即由管理器维护的 "Global Scope")对于 ScriptEngineManager 创建的所有 ScriptEngine 实例都是可用的。Bindings 中的值通常公开于所有脚本中。
​ JDK官方解释

我们通过ScriptEngineManager获取指定脚本语言的执行引擎(ScriptEngine),然后调用eval()执行脚本代码,再加该脚本引擎转换为Invocable接口,该接口由NashornScriptEngine实现,并且这个实现类中定义了invokeFunction方法来执行这段代码。同时它也定义了getInterface方法来将js代码作为传入接口的实现,来调用这个方法。

public static String playJS(String str){//获取脚本引擎管理器ScriptEngineManager scriptEngineManager = new ScriptEngineManager();//获取指定脚本的引擎管理器ScriptEngine js = scriptEngineManager.getEngineByName("js");//conwork.js文件是一个js的加密算法InputStream resource = PlayJS.class.getClassLoader().getResourceAsStream("conwork.js");try {Reader reader = new BufferedReader(new InputStreamReader(resource,"utf-8"));//执行脚本js.eval(reader);if(js instanceof Invocable){//将脚本引擎转换InvocableInvocable invocable = (Invocable) js;// 将js代码转换为该接口的实现,Method是自定义的接口,用来存放加密算法Methods executeMethod = invocable.getInterface(Methods.class);// 执行指定的js方法return executeMethod.encodeInp(str);}} catch (ScriptException e) {e.printStackTrace();} catch (UnsupportedEncodingException e) {e.printStackTrace();}return null ;}

Methods接口

public interface Methods {public String encodeInp(String input);
}

此时,调用playJS方法传入的数据,就是加密以后的数据

接下来玩一个更好玩的,JavaScript代码中执行Java代码

  1. 定义一个静态方法
static String fun1(String name){System.out.format("this is java code , %s"+name);return "thank you";
}
  1. 在JavaScript代码中导入类
//通过Java.type(),这个代码相当于Java代码的import导入类
var myTestClass = Java.ype("com.bywlstuido.MyTestClass");
//有了Java类的原型,就可以调用类中的静态方法了
var result = myTestClass.fun1("JS invoke");
print(result);//this is java code ,JS invoke
//thank you 

执行完毕

http://www.lbrq.cn/news/1057591.html

相关文章:

  • 主机搭建网站教程/视频号链接怎么获取
  • 影楼网站推广/seo五大经验分享
  • 企业网站模块介绍/如何做网站推广及优化
  • 我做微信淘宝客网站/优秀软文案例
  • 做网站加手机app需要多少钱/百度pc端入口
  • 南京定制网站建设公司/网站推广要点
  • 定制制作网站公司/个人网站模板
  • 十大赚钱小程序/seo牛人
  • php网站源码/杭州优化公司哪家好
  • 常用网站png/网上商城推广13种方法
  • 用asp怎么做网站/网络营销软件排行
  • 中国建设银行辽宁分行网站/首页排名优化公司
  • 哪个网站可以做英文兼职/网络营销到底是干嘛的
  • 河北省住房与建设厅网站/新站整站优化
  • 莱西做网站公司/搜索引擎营销的英文缩写是
  • 网站的建设要多少钱/网页做推广
  • wordpress have posts/佛山做网络优化的公司
  • wordpress hotnews/武汉本地seo
  • 沈阳企业定制网站建设/最新引流推广方法
  • 做网站是什么软件/淘宝关键词排名优化技巧
  • 泰州网站制作推广/企业网
  • 我自己做网站/焊工培训班
  • wordpress qq在线聊天/网站设计优化
  • 用tomcat做网站/plc培训机构哪家最好
  • 专做校园购物网站/农产品网络营销
  • 网上做网站怎么赚钱/广州百度竞价托管
  • 合肥装饰公司做的好的网站/利于seo的建站系统有哪些
  • 工商管理局注册查询/谷歌seo详细教学
  • 网站设计团队/今天实时热搜榜排名
  • 微信链接网页网站制作/seo薪酬水平
  • 93、【OS】【Nuttx】【构建】cmake menuconfig 目标
  • Android14的QS面板的加载解析
  • 华硕携多款明星电竞显示器亮相 ChinaJoy2025,联袂 TCL 华星打造沉浸体验
  • 网络编程epoll学习
  • 永磁同步电机的矢量控制
  • 2025-08-05Gitee + PicGo + Typora搭建免费图床