在我的应用程序中,我需要一个函数来生成(不可预测的)随机值,这些随机值在每次调用时都不同,例如在快速循环中。
在 Linux 平台上,我将发布我的脚本(其中将在 PHP 中的 SSL 下运行)我将结合可能的多个工具来确保种子或哈希是完全随机的,通过查询 /dev/random,可能与 OpenSSL 结合设施,包括系统特定的值,例如上次修改的脚本和创建时间。
我正在使用这些特定值,因为即使 A 人拥有脚本并且知道方法,他们也无法猜测(/dev/random 内容、当前内存使用情况、可能的修改时间等)并且不会实际上能够降低用户 B 运行相同脚本的安全性。
在 Windows 平台上,不幸的是我现在必须在上面开发(我仍然在 Linux 上进行测试,但不太频繁)我需要上面描述的随机值,只是为了提供至少有限的保护,防止预测种子或密钥。
我第一次尝试使用memory_get_usage()(使用或不true使用 PHP 的“真实”内存使用的可用参数),即使每次迭代执行大量内存计算,这些值似乎仍然非常静态。
使用这种(有点动态的)内存使用作为种子,让 PRNG 生成更多(快速)随机数是否明智?或者内存是一个如此有限的范围,他们可以创建 2^xx 种子并粗略猜测它。我开始模糊实际随机的界限,如果甚至可以猜测我的操作,即使他们“不是”真的那么随机。