在PHP.netmt_rand()并uniqid()为解释“不生成加密安全值”,并怂恿使用random_int(),random_bytes()或openssl_random_pseudo_bytes()代替。
“密码安全”是什么意思?
计算机通常不能很好地计算真正的随机数。这意味着计算机计算的伪随机数可能是可预测的。
如果然后将此随机数用作加密密钥的基础,则密钥和安全消息可能会受到损害。
加密安全的伪随机数生成器 (CSPRNG) 是一种生成的数字,任何第三方都很难预测它可能是什么。这意味着从这些随机数派生的加密密钥极难确定,使使用此类密钥保护的消息安全。
从
https://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator
理想情况下,CSPRNG 中随机数的生成使用从高质量源(通常是操作系统的随机性 API)获得的熵。然而,在几个这种表面上独立的过程中发现了意想不到的相关性。从信息论的角度来看,随机性的数量,即可以产生的熵,等于系统提供的熵。但有时,在实际情况下,需要的随机数多于可用的熵。在实际实践中,从正在运行的系统中提取随机性的过程也很慢。在这种情况下,有时可以使用 CSPRNG。CSPRNG 可以在更多位上“拉伸”可用熵。
| 归档时间: |
|
| 查看次数: |
2780 次 |
| 最近记录: |