- 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/
在此方法的文档中,它声明如果没有足够的熵来生成数据,它将抛出异常。我的问题与熵有关。它是如何生成的,您能否通过提供足够的熵来防止抛出异常?抛出异常的频率有多高,还是未知? crypto.randomB
我将构建一个经常使用 crypto.randomBytes() 的服务。据我所知,它正在阻塞 I/O。有没有办法至少加快这个过程?多核或多线程能做什么吗? 最佳答案 这里有一些详细信息:How ran
我有以下代码,基于 http://nodejs.org/docs/v0.6.9/api/crypto.html#randomBytes crypto.randomBytes 32, (ex, buf)
我尝试使用 crypto.randomBytes() 方法生成非常大量(> 1GB)的伪随机数据,但我无法为耗尽的熵源生成异常以查看行为是什么我的应用程序以防出现这种可能的异常。 来自 Node.JS
crypto.randomBytes(20).toString('hex')有多随机? 就这么简单,我只需要知道。 最佳答案 crypto.randomBytes() 的随机性如何?通常,足够随机以用
在什么情况下可以接受(从安全角度)使用 Node 的 crypto.pseudoRandomBytes而不是加密强的 crypto.randomBytes ? 我认为 pseudoRandomByte
摘要 我有一个函数,我使用 crypto.randomBytes 生成 token ,但在从函数返回 token 时遇到问题。我想从 createResetToken 返回 token 。我的功能如下
我在使用 NodeJS 加密和 crypto.randomBtyes 函数时遇到了一个奇怪的问题。我检测到似乎最近才出现在我的 NodeJS/Typescript 3.2 应用程序中的奇怪行为。 Th
Node.js 文档强烈反对使用 crypto.randomBytes()。然而,正如我在 StackOverflow 的回答中读到的那样,在所有随机字符串生成方法(例如使用时间戳等)中,实现最高熵的
crypto.randomBytes(48, function (err, buffer) { if (err) { x = false;
我正在导入 ethereumjs-wallet在 angular4 中, import EthereumWallet from 'ethereumjs-wallet'; var wallet = Et
如何使用 crypto.randomBytes 生成特定范围内的随机数? 我希望能够生成这样的随机数: console.log(random(55, 956)); // where 55 is min
如何将从 crypto.randomBytes 返回的字节数组转换为 float ?我正在为 Math.random() 编写一个小的替代品 最佳答案 假设您有一系列随机选择的字节,均匀分布在 [0,
我需要一个加密安全的随机数生成器来替换 Math.random() 我遇到了 crypto.randomBytes() 但是,它返回一个字节数组。有什么方法可以将字节数组变成0-1(以便与Math.r
我正在使用以下方法为 iOS 构建 zeromq 库: https://github.com/drewcrawford/libzmq-ios 除了一些警告出现 3 次之外,构建日志看起来很好: CC
我是新手。使用 amazon-cognito-identity-js 时出错时出现以下错误npm 包如下所示 _global.util.crypto.lib.randomBytes is not a
crypto = require('crypto') async function generateToken(){ await crypto.randomBytes(256,function(e
我正在尝试在 Node.js 中生成恰好 6 的随机数字,这需要加密安全。这是我的代码: var crypto = require('crypto'); crypto.randomBytes(2, f
由于 1000000 不是 2 的幂,因此随机生成从 0 到 999999 的精确值的正确方法是什么? 这是我的方法: 使用crypto.randomBytes生成3个字节并转换为hex 使用前 5
大家好,我主要是想重新创建这个 Node 包: https://github.com/seishun/node-steam-crypto/blob/master/index.js 在 golang 中
我是一名优秀的程序员,十分优秀!