尽管我想象每个PHP加密扩展都会提供自己的版本来生成随机数据,就像它们目前所做的那样:
random_bytes()
比它更好)这仅仅是因为任何密码学API没有访问CSPRNG将是不完整的。事实上,mcrypt_create_iv()
是由PHP开发人员出于同样的原因添加的,而它本身并不是libmcrypt的一部分。
我只用它来安全地/可检索唯一字符串。
“随机”并不意味着“唯一”。前者需要是不可预测的,而后者必须是不可重复的。
的确,将每个随机字节添加到字符串中,碰撞的机会将呈指数级下降,但唯一性永远无法保证100%。
password_hash()
,它的“salt”选项也已经被弃用了,恰好我最近也回答了一个关于此问题的问题:https://dev59.com/iJzga4cB1Zd3GeqP_xrl#40378435 - Narf