为了保证随机数生成器的诚实,我们的想法是,如果用户愿意,可以验证该数字实际上是从公共熵源生成的。这使系统能够确保服务器已选择随机数 的用户。
$entropy = "what_do_you_think";
$md5 = md5($entropy);
/*take the first 10 hex characters of the md5 hash*/
$hex = substr($md5, 0, 9);
/*convert the hex to decimal*/
$dec = hexdec($hex);
/*use this decimal as a seed*/
srand($dec);
/*pick a random number between 0 and 9, ultimately seeded by the entropy*/
$rand = rand(0,9);
我的问题是:什么是一些良好的公共熵源(最好是不可变的和混乱的),并且绝对可参考,可以在一个字符串中连接在一起并输入md5?一些想法是特定的股票价格,温度(来自诚实的来源),比特币块链中包含的哈希......
答案 0 :(得分:2)
查看xkcd的geohashing算法。我认为这几乎就是你要找的东西。
http://wiki.xkcd.com/geohashing/Implementations
geohashing算法使用DOW Jones作为熵源。本页讨论了通过网络获得道琼斯开盘价的方法。 http://wiki.xkcd.com/geohashing/Dow_Jones_Industrial_Average
但我认为可以在BitCoin事务数据库中找到公共,不可变和可验证熵的最佳来源。它广泛分布并经过不断验证,并具有定义的协议。
答案 1 :(得分:0)
从物理系获取它。
http://qrng.physik.hu-berlin.de/
http://qrng.physik.hu-berlin.de/download
或只是
用户可以根据需要验证该号码实际上是从公共熵源生成的
他们是如何做到的?
您是否实时访问系统内存以确保运行收集熵的程序的程序集是正确的而非恶意的?
答案 2 :(得分:0)
使用物理熵的安全价值在于它是不可预测的,即除了收购者以外的任何人都不知道。究竟什么是使用可供任何人使用的熵的重点?也可以将你的打印输出打开到百万个地方并选择一个起点。
除此之外,原则上没有办法确定服务器给你的随机数是否实际上来自它显然使用的熵源。