利用ScriptEngineManager执行js的RSA加密
来源:互联网 发布:网络角色扮演游戏排行 编辑:程序博客网 时间:2024/05/17 06:05
有时候出于各种原因我们需要模拟登陆一个网站,有的网站可能会把密码在前端用js加密后再传输到服务器。此时我们就需要找到对应的js方法,把它针对性的处理,再使用JAVA提供的ScriptEngineManager去执行提取处理后的js方法,得到我们想要的加密后的密码。
以服务器提供exponent和modulus为例,js根据这两个参数对密码进行RSA加密,然后传输给服务器进行解密。首先修改security.js,把window等对象给删掉,因为脚本引擎会提示找不到这些对象,接着把$w.这些也给替换掉,再实例化一个var RSAUtils = {};最后在该js最后面添加一个function基本就可以进行加密操作了,添加的function如下:
function encryptPassword(exponent, modulus,password) { var key = RSAUtils.getKeyPair(exponent, '', modulus); password = RSAUtils.encryptedString(key, password); return password;}
JAVA代码也是非常的简单
ScriptEngineManager engineManager = new ScriptEngineManager();ScriptEngine engine = engineManager.getEngineByName("js");InputStream ins = JS.class.getResourceAsStream("/security.js");InputStreamReader insReader = new InputStreamReader(ins);try {engine.eval(insReader);engine.eval("var password =encryptPassword('010001','00ce0999652fd6a8fe7a51b040eb4d7536efe2e70d44e6fc96c8c6e778484436d2b4abe35ea2de6d723bae45d1329bd9afa337f8aeb238aff98fa9912eead16f51','123456');");String password = engine.get("password").toString();System.out.println(password);} catch (ScriptException e) {e.printStackTrace();}
给出
exponent = 010001
modulus=00ce0999652fd6a8fe7a51b040eb4d7536efe2e70d44e6fc96c8c6e778484436d2b4abe35ea2de6d723bae45d1329bd9afa337f8aeb238aff98fa9912eead16f51
加密明文=123456
执行JAVA代码后,得到的密文为
25acbd69510b4133d0e3e80c0febf8907035915d50ce262a2dd8d9340d3caf7c3e93aa45f56493b6bf89234a292034f2f66e64b80cb91917a7f095a2df5fa5f3
密文跟目标网站同样的明文加密后传输的参数一样,大功告成。
security.js 下载地址 http://download.csdn.net/detail/userwyh/9803965
- 利用ScriptEngineManager执行js的RSA加密
- 利用security.js实现RSA加密
- js的RSA和AES加密解密
- ScriptEngineManager的妙用
- Js参数RSA加密传输,jsencrypt.js的使用
- 关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名
- 关于使用JS前台加密、JAVA后台解密的RSA实现,RSA加密和签名
- openssl的rsa加密解密在js的实现
- js java 密码的rsa加密解密配合
- js java 密码的rsa加密解密配合
- js java 密码的rsa加密解密配合
- RSA 加解密的例子,JS加密--php解密
- js使用rsa加密大数据块的java实现
- java的RSA加密
- android的RSA加密
- 利用ScriptEngineManager实现字符串公式灵活计算
- 利用Openssl进行RSA加密签名算法
- 利用openssl进行RSA加密解密
- 华为上机考试
- SpriteKit 框架开发简单游戏
- CodeForces 706B (二分)
- view_ _ Android应用坐标系统全面详解
- 网络请求框架(一):AsyncHttpClient
- 利用ScriptEngineManager执行js的RSA加密
- 元素脱离普通文档流后特点及问题总结
- 水平排列元素的底部对齐
- iOS数据库汇总-----更新不间断
- 不持有焦点的跑马灯效果TextView
- # android 系统修改/dev/bus/usb/*和串口的访问权限
- Metro
- leetcode_c++:图:Clone Graph(133)
- [leetcode]153. Find Minimum in Rotated Sorted Array