so1*_*311 18 encryption cryptography playing-cards
我正在考虑改编半流行的纸牌游戏.我想让它在没有中央服务器的情况下运行,而我正试图想出一个不必信任客户就会让作弊变得不可能的方案.
我看到的基本问题是每个玩家都有几堆牌(平局牌,当前牌和弃牌牌).任何一个玩家都不可能改变这些桩的构成,除非游戏规则允许(即绘制或丢弃牌),玩家也不能知道他们或他们的对手的桩是什么.
我觉得应该有一些方法可以使用像公钥加密这样的东西来完成这个,但我一直在我的方案中找到漏洞.任何人都可以建议一个协议或指向我这个主题的一些资源?
[编辑]好的,所以我一直在考虑这个问题,这是我想出的一个想法.如果你可以戳它的任何漏洞,请告诉我.
在随机播放时,玩家有一堆牌,其价值为他们所知.他们采用这些值,将随机盐连接到每个值,然后哈希它们.他们记录盐,并将哈希传给他们的对手.
对手连接他们自己的盐,再次哈希,然后将哈希洗牌并将牌组传回原来的牌手.
我相信在这一点上,牌组已被随机化,玩家都无法了解这些价值观.然而,当一张牌被抽出时,对手可以揭示他们的盐,允许第一个玩家确定原始值是什么,并且当玩牌时玩家展示他们自己的盐,允许对手验证牌值.
你的问题是密码学中着名的智力扑克问题(这是我在大学里最喜欢的加密课程之一).这是可能的,并且已经解决(部分地,像Ron Rivest一样加密),只要你不介意一个巨大的性能打击.
查看维基页面了解更多详情.
我想描述一个很快就出现在我心中的想法.我不知道它是否满足您的所有需求,所以请随时对此发表评论.
假设玩家A有卡A1,A2,A3,...从数表示一组0,1... N-1.这些卡也可能被分成堆,但这不会改变以下内容.
而不是处理这些卡与一个列表[A1, A2, A3, ...],您可以改用他们两个[A1_a, A2_a, A3_a, ...]和[A1_b, A2_b, A3_b, ...]其中一个是与球员A和其他与播放器B.他们以这样的方式产生的,每一个是随机的(在范围内0...N-1),但两者是相关的,使得A1_a + A1_b = A1,A2_a + A2_b = A2,...(所有操作模N).
N| 归档时间: |
|
| 查看次数: |
1023 次 |
| 最近记录: |