正如标题所说:非安全随机数发生器和安全随机数发生器之间有什么区别?
答案 0 :(得分:31)
没有计算上可行的算法:
用于安全随机数生成器。
示例:线性反馈移位寄存器会产生大量随机数,但如果输出足够,则可以发现种子并预测所有后续数字。
答案 1 :(得分:5)
即使给出了先前生成的随机数列表,也不应该预测安全随机数。您通常将它用作加密例程的密钥,因此您不希望它是可猜测的或可预测的。当然,可猜测取决于上下文,但您应该假设攻击者知道您知道并可能用于生成随机数的所有内容。
有各种网站可以生成安全随机数,一个可信任的网站是hotbits。如果您只是将随机数生成为一次性活动,为什么不使用抽奖结果,因为它可以证明是随机的。当然,不要告诉任何人哪个抽奖和抽奖,并将这些数字通过适当的轧机来获得你想要的范围。
答案 2 :(得分:1)
只有一个“随机数”,通常意味着一个伪随机数。因为它是伪随机数,所以攻击者可以(轻松)预测它。
安全随机数是来自真正随机数据源的随机数,即。涉及一些熵池。
答案 3 :(得分:1)
同意Purfiedeas。关于这一点的文章也很好,名为Cheat Online Poker
答案 4 :(得分:1)
随机数可能意味着算法使用“种子”返回的伪随机数。
安全随机数将是从诸如基于铯的随机数发生器(其使用铯的衰减率返回数字)之类的设备返回的真随机数。这是自然发生的,无法预测。
答案 5 :(得分:0)
这可能取决于上下文,但是当你像这样比较它们时,我会说“随机数”是pseduo random number而“安全随机数”是真正随机的。前者为你提供了一个基于种子和算法的数字,另一个是基于一个继承的随机函数。
答案 6 :(得分:0)
这就像AES和ROT13之间的区别。
为了减少轻率,通常会在产生随机数之间进行权衡,在它有多难以及序列中的下一个可预测之后,您会看到一些随机数。语言的内置rand()返回的随机数通常是廉价的,可预测的变种。