【发布时间】:2022-02-03 18:15:41
【问题描述】:
我正在尝试在 javascript 中使用 java 包 Base64 对字节数组进行编码。 Javascript 引擎是 Rhino。
以下是日志中的错误。
java.util.concurrent.ExecutionException: javax.script.ScriptException: TypeError: Cannot call property getEncoder in object [JavaPackage java.util.Base64]. It is not a function, it is "object".
下面是sn-p代码
var md = java.security.MessageDigest.getInstance('SHA-256');
md.update(salt);
var sha256Bytes = []
sha256Bytes=md.digest(new java.lang.String(givenPassword).getBytes('UTF-8'));
var sha256Hash = java.lang.String(java.util.Base64.getEncoder().encode(sha256Bytes));
我无法在这里找出问题所在。此外,还导入了包 java.util.Base64.*。
【问题讨论】:
-
您使用的是哪个版本的 Rhino 以及如何启动脚本?我刚刚测试了它(Rhino-1.7.14.jar),它对我来说很好,结果给了我一个 Base64 编码的字符串。
-
我使用的是 JS 脚本引擎:Rhino 1.7.13
-
您没有提及如何启动脚本。我用从here下载的Rhina-1.7.14 jar 测试
-
我受版本限制。仅支持 Rhino 1.7.13
-
你解决了吗?
标签: javascript base64 encode sha256 rhino