11

我有一个网站,可以根据虚拟骰子为用户提供不同的结果。我希望他们相信我的随机数是诚实的,所以我不想在我自己的代码中确定它(对于我持怀疑态度的用户来说,这是一个我可以操纵的黑匣子),我想提出一些其他机制。

一种想法是指向一些可信的网站(例如政府网站),该网站具有随时间变化的可公开观察的随机数。然后我可以说,“我们将根据 0 到 9 之间的数字确定您的结果,这将是 10 秒内 [url] 处的数字。”

有什么建议么?

4

1 回答 1

4

我会自己去这个网站。它有一个公共匿名 URL 用于几种数字,以及观察它们的实时页面:

十六进制数

二进制数

它还包括对随机性来源的科学解释的参考,以及对它的实际演示,甚至是专门针对骰子的演示。

从您的代码中,您只需检索上面提到的数字 URL。

可验证性很重要的替代方案

一种完全替代的方法:当截止日期到来时,检索外部控制的高流量交互站点的主页,例如 Stack Overflow 的问题页面。存储页面,获取其 MD5 或 SHA1 哈希,并从中得出您的卷。

然后您可以:

  • 显示快照时的页面以验证它是否工作 HTML
  • 它的 HTML 源代码充满了时间戳来验证真实性和检索时间接近秒
  • 让人们根据它自己验证哈希
  • 保证值的随机性,因为在数学上不可能预测您需要在 SO 这样的网站上更改什么以触发给定的新哈希值

任何篡改该系统的尝试,例如 Jeff 故意重复一个旧页面,因为他知道它产生的 MD5 哈希,很容易被该站点的实时性质揭穿 - 每个人都可以看到问题不是t 最近到快照时间。

于 2013-05-15T13:46:42.023 回答