易截截图软件、单文件、免安装、纯绿色、仅160KB

在java中利用rhino执行javascript

以rhino中执行QQ邮箱的safeauth.js为例
js代码地址:http://res.qqmail.com/zh_CN/htmledition20091127/js/safeauth.js
(1)导入相应类
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import com.sun.phobos.script.javascript.RhinoScriptEngineFactory;
(2)解析JS
ScriptEngineManager engineManager = new ScriptEngineManager();
engineManager.registerEngineExtension("js", new RhinoScriptEngineFactory());
ScriptEngine engine = engineManager.getEngineByName("js");
InputStream ins = getClass().getResourceAsStream("/safeauth.js");
InputStreamReader insReader = new InputStreamReader(ins);
engine.eval(insReader);
会报错,说找不到window,navigator对象
这是因为rhino只提供了执行脚本的引擎环境,没有提供类似浏览器的host环境,所以当然找不到这两个对象
将相应的带有window,navigator的行注释掉,并加入以下代码,构成新的safeauth.js文件:
//-- encrypt password --//
function encryptPassword(pp, PublicKey, PublicTs) {
print("pp=" + pp + "\n");
print("PublicKey=" + PublicKey + "\n");
print("PublicTs=" + PublicTs + "\n");
var RSA = new RSAKey();
RSA.setPublic(PublicKey, "10001");
var Res = RSA.encrypt(pp + '\n' + PublicTs + '\n');
if (Res){
return hex2b64(Res);
} else {
return "EncodingPasswordError";
}
}
(3)执行JS:
engine.eval("var t=encryptPassword('" + pp + "','" + publicKey + "','" + publicTs + "');");
String p = engine.get("t").toString();
传入pp(密码域值),publicKey和publicTs(这两个值从http://mail.qq.com/cgi-bin/loginpage页面内容得到),即可以计算编码后的密码。


相关文档:

JAVA读取资源文件的N种方法

 
如何读取资源文件:
(一)
Properties props = new Properties();   
props.load(new FileInputStream("db.properties"));
(二)
blog.properties文件如下
dbdriver=oracle.jdbc.driver.OracleDriver
dburl=jdbc:oracle:thin:@127.0.0.1:1521:ora92
dbuser=blog
dbpwd=blog
- ......

分类排序方法——上移下移操作(Java版)

 最近项目中遇到了上移下移操作的一个操作,以前也看到过,但一直没有去研究过,这次项目中遇到了,也就去研究了一把,其实实现原理也挺简单的,说白了就是
要记录数据库里的要进行排序表的总记录数量,然后根据循环的次数,多写几个隐藏变量,进行上移下移操作的时候进行判断就可以了。
    &n ......

使用JAVA开发系统托盘程序

 使用JAVA开发系统托盘程序
@for&ever 2009-11-27
参考文章《New System Tray Functionality in Java SE 6》,网址 http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/systemtray/ 。
JDK必须要在 1.6 版本。
最近项目中要实现定时任务常驻系统,能够同时有一个比较友好的操作方式提供给 ......

java学习路线图明细

一:J2SE 面向对象-封装、继承、多态
内存的分析
递归
集合类、泛型、自动打包与解包、Annotation
IO
多线程、线程同步
TCP/UDP
AWT、事件模型、匿名类
正则表达式
反射机制
2:数据库(Oracle或者MySQL)
SQL语句
多表连接,内外连接, 子查询等
管理表、视图、索引、序列、约束等
树状结构存储
存储过 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号