- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在什么情况下可以接受(从安全角度)使用 Node 的 crypto.pseudoRandomBytes
而不是加密强的 crypto.randomBytes
?
我认为 (incorrect),但文档并没有太多关于如何减少的说明——很强大。pseudoRandomBytes
性能更好,但代价是更可预测
具体来说,我想知道我是否可以使用 pseudoRandomBytes
生成 CSRF token 。
最佳答案
事实证明,使用默认的 OpenSSL(与 node 捆绑在一起,但如果您自己构建,则可以使用 configure different engines ),the algorithm to generate random data 对于两者完全相同 randomBytes
(RAND_bytes
) 和 pseudoRandomBytes
(RAND_pseudo_bytes
)。
这两个调用之间的唯一区别取决于您使用的 Node 版本:
randomBytes
会返回错误。 pseudoRandomBytes
将始终返回字节,即使熵池没有正确播种。randomBytes
直到熵池有足够的数据后才会返回。这应该只需要几毫秒(除非系统刚刚启动)。一旦熵池中植入了足够的数据,它就永远不会“耗尽”,因此 randomBytes
和 pseudoRandomBytes
之间绝对没有有效区别 一旦熵池满了。
由于使用完全相同的算法生成随机数据,因此两次调用之间的性能没有差异(尽管有一次性熵池播种)。
关于node.js - randomBytes 与 pseudoRandomBytes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18130254/
在什么情况下可以接受(从安全角度)使用 Node 的 crypto.pseudoRandomBytes而不是加密强的 crypto.randomBytes ? 我认为 pseudoRandomByte
我是一名优秀的程序员,十分优秀!