我正在为一个特定的应用程序编写一个java客户端。已经有一个与应用程序通信的库,一个用javascript for node.js编写的npm模块,以及一个使用webpack编译的web变体。使用java重写npm模块非常复杂,因此我正在寻找一种直接从java代码执行它的解决方案。
我尝试使用java中嵌入的graalvm作为脚本引擎来实现它。我面临的问题是npm库获取随机值。如果在浏览器中执行,则此库使用window.crypto.getrandomvalues;如果在node.js环境中执行,则使用require(“crypto”).randombytes。
graalvm没有window.crypto.getrandomvalues显然,或者不知道require,也没有require(“crypto”).randombytes。
是否有getrandomvalues或randombytes的纯js实现?或者可以从javascript调用例如java实现securerandom.generateseed来替换window.crypto.getrandomvalues吗?
谢谢
更新:
我刚研究了如何调用securerandom。
我用以下内容创建了js文件
var SecureRandom = Java.type('java.security.SecureRandom');
var window = {
crypto: {
getRandomValues: (buf) => {
//print("buf_length", buf, buf.length);
var bytes = SecureRandom.getSeed(buf.length);
buf.set(bytes);
}
}
};
导入它,它似乎正在工作。现在我可以加载npm模块的浏览器版本,没有任何错误。仍然存在一些问题,但不是很严重。
暂无答案!
目前还没有任何答案,快来回答吧!