使用案例:"我忘了密码"按钮.我们找不到用户的原始密码,因为它以散列形式存储,因此唯一要做的就是生成一个新的随机密码并通过电子邮件发送给他.这需要加密不可预测的随机数,mt_rand不够好,通常我们不能假设托管服务将提供访问操作系统以安装加密随机数模块等所以我正在寻找一种方法在PHP本身生成安全的随机数.
到目前为止我提出的解决方案涉及存储初始种子,然后为每次调用,
result = seed
seed = sha512(seed . mt_rand())
Run Code Online (Sandbox Code Playgroud)
这是基于SHA512哈希函数的安全性(该mt_rand电话只是为了让生活多一点对谁获得数据库的副本对手困难).
我错过了什么,还是有更好的解决方案?