我正在寻找C / C ++中的加密安全随机数生成器。速度非常重要,因为这将用于在我们的应用程序中生成数TB的随机性。我尝试了libgcrypt中的那个,但速度非常慢。任何建议都会非常有用。
答案 0 :(得分:1)
尝试ANSI X9.17标准(金融机构密钥管理(批发))。
此页面描述了该技术: http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator
您应该能够采用任何分组密码实现,例如AES,并使用这种技术轻松将其包装到相当快速,合理安全的随机数生成器中,只需几行。
答案 1 :(得分:1)
您还可以尝试NIST的出版物SP800-90中描述的随机生成器(另请参阅revised draft)。
然而,该出版物中的DUAL_EC_DRBG最近一直存在争议;可以使用其他三个发电机中的一个。
答案 2 :(得分:-1)
你真的需要加密安全,还是只需要长周期的非常好的随机数?
使用SIMD的Mersenne Twister - SFMT - 快速且良好。 BSD上的/ dev / random通常是Yarrow,它是加密安全的。
Fortuna是Yarrow的后续行动。
如果你想要CSPRNG肯定胜过速度?