【发布时间】:2020-03-09 01:43:46
【问题描述】:
我是密码学和相关内容的新手。我一直在研究 PRNG 和 CPP 库,它们提供了我在现代 CPP 中找到的 std::random_device 和 std::mt19937_64 的这些设施。但是,它们之间有什么区别以及我们应该如何/在哪里使用它们(究竟在什么情况下)?
【问题讨论】:
-
取决于实现,std::random_device 可能会产生加密安全的随机数。 std::mt19937 从不产生密码安全的随机数。您可以播种 std::mt19937 甚至序列化其内部状态。你不能用 std::random_device 做到这一点。 std::mt19937 通常比 std::random_device 快得多。