我有一个网站,可以根据虚拟骰子为用户提供不同的结果。我希望他们相信我的随机数是诚实的,所以我不想在我自己的代码中确定它(对于我持怀疑态度的用户来说,这是一个我可以操纵的黑匣子),我想提出一些其他机制。
一种想法是指向一些可信的网站(例如政府网站),该网站具有随时间变化的可公开观察的随机数。然后我可以说,“我们将根据 0 到 9 之间的数字确定您的结果,这将是 10 秒内 [url] 处的数字。”
有什么建议么?
我会自己去这个网站。它有一个公共匿名 URL 用于几种数字,以及观察它们的实时页面:
它还包括对随机性来源的科学解释的参考,以及对它的实际演示,甚至是专门针对骰子的演示。
从您的代码中,您只需检索上面提到的数字 URL。
一种完全替代的方法:当截止日期到来时,检索外部控制的高流量交互站点的主页,例如 Stack Overflow 的问题页面。存储页面,获取其 MD5 或 SHA1 哈希,并从中得出您的卷。
然后您可以:
任何篡改该系统的尝试,例如 Jeff 故意重复一个旧页面,因为他知道它产生的 MD5 哈希,很容易被该站点的实时性质揭穿 - 每个人都可以看到问题不是t 最近到快照时间。