【问题标题】:How can we generate Random Salt of 32 bytes in Rhino JS我们如何在 Rhino JS 中生成 32 字节的随机盐
【发布时间】:2022-02-03 09:42:42
【问题描述】:

我正在尝试生成 32 字节大小的随机盐。但是我的 JS 引擎 Rhino 1.7.13 不支持 SecureRandom 类。

下面是相同的代码sn-p。

function getSalt() {
    var random = new SecureRandom();
    var salt1 = new Array(32);
    random.nextBytes(salt1);
    return salt1;
}

错误记录如下。

java.util.concurrent.ExecutionException: javax.script.ScriptException: ReferenceError: "SecureRandom" 未定义。

另外,rhino js 引擎不允许任何外部库的导入或加载。有没有一种方法可以在 Rhino 中生成安全的随机盐?

【问题讨论】:

    标签: javascript random salt rhino secure-random


    【解决方案1】:

    对于SecureRandom,使用完全限定名称java.security.SecureRandom。 而且字节数组必须是Java字节数组,否则会报错:

    无法将 org.mozilla.javascript.NativeArray@6b419da 转换为 byte[]

    我从 Tomasz Gawel 找到了this answer,它展示了如何在 Rhino 中创建 Java 字节数组。

    经过上述修改,完整的脚本为:

    function getSalt() {
        var random = new java.security.SecureRandom();
        var salt1 = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 32)
        random.nextBytes(salt1);
        return salt1;
    }
    
    saltB64 = java.lang.String(java.util.Base64.getEncoder().encode(getSalt()))
    print(saltB64)
    

    【讨论】:

      猜你喜欢
      • 2019-10-14
      • 2014-05-05
      • 1970-01-01
      • 2015-03-27
      • 2023-04-06
      • 2012-08-05
      • 1970-01-01
      • 2019-06-06
      相关资源
      最近更新 更多