为什么有人会使用System.Random中的"标准"随机数生成器,而不是总是使用System.Security.Cryptography.RandomNumberGenerator(或其子类,因为RandomNumberGenerator是抽象的)的加密安全随机数生成器?
Nate Lawson 在13:11分钟的Google Tech Talk演讲中告诉我们" Crypto Strikes Back ",不要使用Python,Java和C#中的"标准"随机数生成器,而是使用加密安全版本.
我知道两个版本的随机数生成器之间的区别(参见问题101337).
但是,有什么理由不总是使用安全随机数发生器?为什么要使用System.Random?性能或许?
由于计算机无法选择随机数(可以吗?)这个随机数是如何实际生成的.例如在C#中我们说,
Random.Next()
Run Code Online (Sandbox Code Playgroud)
里面发生了什么?
为什么Random类不被视为“随机”足以用于高安全性应用程序(例如密码学),并且建议用于System.RandomNumberGenerator这些应用程序?