- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在此方法的文档中,它声明如果没有足够的熵来生成数据,它将抛出异常。我的问题与熵有关。它是如何生成的,您能否通过提供足够的熵来防止抛出异常?抛出异常的频率有多高,还是未知?
crypto.randomBytes
的文档:
crypto.randomBytes(size, [callback])
// async
crypto.randomBytes(256, function(ex, buf) {
if (ex) throw ex;
console.log('Have %d bytes of random data: %s', buf.length, buf);
});
Generates cryptographically strong pseudo-random data.
Will throw error or invoke callback with error, if there is not enough accumulated entropy to generate cryptographically strong data. In other words, crypto.randomBytes without callback will not block even if all entropy sources are drained.
在下面的示例中,我将如何正确处理异常并仍然完全填充数组,基本上确保数组已被生成的字节完全填充。我会不会只捕获异常并在 catch block 中生成一个新数组,但如果这也会引发异常呢?从本质上讲,我如何才能使此代码在 100% 的时间内正常工作?
var codes = [];
for(var i = 0;i < 100;i++){
(function(i){
crypto.randomBytes(256, function(ex, buf) {
if (ex) throw ex;
codes[i] = buf.toString('hex');
});
})(i)
}
最佳答案
如果没有可用的熵,最好的办法是稍等片刻,然后重试。您需要等待多长时间取决于您需要多少熵以及底层熵源的工作方式。
在实践中,我怀疑你会遇到任何问题。我不知道 Node.js 在幕后做了什么,其他库中的等效函数通常是作为对操作系统的熵池的调用来实现的——例如/dev/urandom
或 CryptGenRandom()
- 或者作为从操作系统的熵池播种的 CSPRNG。无论哪种情况,您都不会阻塞。
只有在 Linux 上从 /dev/random
读取时,阻塞才会成为问题。这是因为 /dev/random
在 Linux 上可能会阻塞,但在其他平台上不会。如果您直接从硬件 RNG 读取数据,这也可能是个问题。
关于javascript - Crypto.randomBytes 处理异常对熵不足有何影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24582325/
我们有一个 WPF 应用程序,允许用户下载加密内容,并且我们希望提供离线解密该内容的功能。我的想法是下载 key 并使用 DPAPI 存储它们,但我在使用熵参数时遇到了问题。 是否有任何方法可以生成熵
在 php.ini 的 session 部分,有一个名为 session.entropy_length 的指令。 我知道它用于使 session ID 的生成“更加随机”。 它如何使 session
在 php.ini 的 session 部分,有一个名为 session.entropy_length 的指令。 我知道它用于使 session ID 的生成“更加随机”。 它如何使 session
我使用决策树算法来解决二元分类问题,目标是最大限度地减少分类的误报(最大化阳性预测值)(诊断工具的成本非常高) 。 有没有办法在基尼/熵分割标准中引入权重来惩罚误报错误分类? Here例如,修改后的基
我想检查我的 std::random_device 实现是否具有非零熵(即非确定性),使用 std::random_device::entropy() 函数。然而,根据至cppreference.co
我在 tensorflow_decision_forests 文档 ( https://github.com/tensorflow/decision-forests ) ( https://www.t
我是一名优秀的程序员,十分优秀!