import{_ as c,c as x,a,b as m,d as s,o as j}from"./app-BdNP3b8G.js";const e="/images/2018/04/vdice_04.png",i="/images/2018/04/vdice_05.png",t={};function n(r,l){return j(),x("div",null,l[0]||(l[0]=[a('
除了抛币协议,加密领域还有一个很有趣的课题和游戏的去中心化直接相关,就是Mental Poker协议,中文一般翻译成“智力扑克”,但我认为这个翻译并不准确,“Mental Poker”一词来源于1979年的一篇论文《Mental Poker》,作者是Shamir,Rivest和Adleman(就是发明RSA算法的三位大牛),里面这么描述这个场景:
Mental这个词在这里应该是意念或者思维的意思,和盲棋是对应的,但中文中并没有“意念扑克”这样的词,所以翻译成“盲牌协议”其实更贴切一些。和象棋围棋这样的信息公开游戏不同,扑克游戏大部分都有发牌环节,玩家手中的牌是保密的,所以两位象棋大师完全可以在电话里通过“炮二平五、马八进七”来一局象棋,但扑克牌就不行了,你说手里有一对Ace,我怎么知道你没撒谎呢?
所以Mental Poker协议最关键的就是洗牌和发牌这个流程,这个过程既要保证是随机和公平的,又要保证玩家的手牌的私密性,在这篇论文里给了一个巧妙的方法,先举个形象的例子:
Alice想把一件珍宝通过信使送给Bob,但信使非常不可靠,没有锁进箱子的东西他一定会偷的,并且如果让信使拿到钥匙他也一定会去打开锁的,那在这种情况下Alice和Bob有什么办法安全的把宝物送给对方呢?答案是:Alice用箱子把宝物装进去,然后用自己的锁把箱子锁起来送给Bob,Bob收到箱子后再加上一把自己的锁,把箱子再送回给Alice,Alice收到后打开自己的锁送回给Bob,最后Bob收到箱子之后再打开自己的所,就可以拿到宝物了。
按这个思路换成扑克牌游戏,假设Alice和Bob要玩一局扑克牌游戏,开局的时候他们都要一副牌(52张)中各抽取5张,那么过程就是这样:
',6),m("ol",null,[m("li",null,[s("Alice负责洗牌,她首先生成一个长度为52的数组,数组的每个元素表示一张牌,然后用她的加密算法"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.153em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D434 TEX-I"})])])])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mi",null,"E"),m("mi",null,"A")])])])]),s("对这些元素进行加密,再把数组顺序打乱(洗牌)之后"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.153em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D434 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mi",null,"E"),m("mi",null,"A")]),m("mo",{stretchy:"false"},"("),m("mi",null,"M"),m("mo",{stretchy:"false"},")")])])]),s("发送给下Bob")]),m("li",null,[s("Bob收到这些牌之后并不认识,因为上面都有Alice的锁,所以他只能随机挑出5张牌,用自己的加密算法之后生成"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.153em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D434 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mi",null,"E"),m("mi",null,"B")]),m("mo",{stretchy:"false"},"("),m("msub",null,[m("mi",null,"E"),m("mi",null,"A")]),m("mo",{stretchy:"false"},"("),m("mi",null,"M"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")")])])]),s("送给Alice")]),m("li",null,[s("Alice收到这5张牌之后用自己的解密函数解密,生成"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D437 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.153em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D434 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.153em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D434 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-msub",{space:"4"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mi",null,"D"),m("mi",null,"A")]),m("mo",{stretchy:"false"},"("),m("msub",null,[m("mi",null,"E"),m("mi",null,"B")]),m("mo",{stretchy:"false"},"("),m("msub",null,[m("mi",null,"E"),m("mi",null,"A")]),m("mo",{stretchy:"false"},"("),m("mi",null,"M"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")"),m("mo",null,"="),m("msub",null,[m("mi",null,"E"),m("mi",null,"B")]),m("mo",{stretchy:"false"},"("),m("mi",null,"M"),m("mo",{stretchy:"false"},")")])])]),s("送还给Bob")]),m("li",null,[s("Bob收到后进行解密,得到"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D437 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-mi",{class:"mjx-i",space:"4"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mi",null,"D"),m("mi",null,"B")]),m("mo",{stretchy:"false"},"("),m("msub",null,[m("mi",null,"E"),m("mi",null,"B")]),m("mo",{stretchy:"false"},"("),m("mi",null,"M"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")"),m("mo",null,"="),m("mi",null,"M")])])]),s("作为自己的牌")]),m("li",null,[s("最后Bob从剩下的47张牌中随机挑出5张送给Alice,Alice直接解密得到"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D437 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.153em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D434 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.153em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D434 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-mi",{class:"mjx-i",space:"4"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mi",null,"D"),m("mi",null,"A")]),m("mo",{stretchy:"false"},"("),m("msub",null,[m("mi",null,"E"),m("mi",null,"A")]),m("mo",{stretchy:"false"},"("),m("mi",null,"M"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")"),m("mo",null,"="),m("mi",null,"M")])])]),s("作为她的牌")]),m("li",null,"发牌结束后双方交换密钥以验证此过程没有作弊")],-1),m("hr",null,null,-1),m("p",null,"这个协议中的加密函数需要满足“可交换性”,也就是对一份数据进行多次加密,加密的次序不影响最后的结果:",-1),m("mjx-container",{class:"MathJax",jax:"CHTML",display:"true",style:{position:"relative"}},[m("mjx-math",{display:"true",style:{"margin-left":"0","margin-right":"0"},class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.153em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D434 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-msub",{space:"4"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.153em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D434 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"block"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[m("msub",null,[m("mi",null,"E"),m("mi",null,"A")]),m("mo",{stretchy:"false"},"("),m("msub",null,[m("mi",null,"E"),m("mi",null,"B")]),m("mo",{stretchy:"false"},"("),m("mi",null,"M"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")"),m("mo",null,"="),m("msub",null,[m("mi",null,"E"),m("mi",null,"B")]),m("mo",{stretchy:"false"},"("),m("msub",null,[m("mi",null,"E"),m("mi",null,"A")]),m("mo",{stretchy:"false"},"("),m("mi",null,"M"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")")])])],-1),m("p",null,"这样在第3步过程中",-1),m("mjx-container",{class:"MathJax",jax:"CHTML",display:"true",style:{position:"relative"}},[m("mjx-math",{display:"true",style:{"margin-left":"0","margin-right":"0"},class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D437 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.153em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D434 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.153em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D434 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-msub",{space:"4"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D437 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.153em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D434 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.153em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D434 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-msub",{space:"4"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.026em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D435 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"block"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[m("msub",null,[m("mi",null,"D"),m("mi",null,"A")]),m("mo",{stretchy:"false"},"("),m("msub",null,[m("mi",null,"E"),m("mi",null,"B")]),m("mo",{stretchy:"false"},"("),m("msub",null,[m("mi",null,"E"),m("mi",null,"A")]),m("mo",{stretchy:"false"},"("),m("mi",null,"M"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")"),m("mo",null,"="),m("msub",null,[m("mi",null,"D"),m("mi",null,"A")]),m("mo",{stretchy:"false"},"("),m("msub",null,[m("mi",null,"E"),m("mi",null,"A")]),m("mo",{stretchy:"false"},"("),m("msub",null,[m("mi",null,"E"),m("mi",null,"B")]),m("mo",{stretchy:"false"},"("),m("mi",null,"M"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")"),m("mo",null,"="),m("msub",null,[m("mi",null,"E"),m("mi",null,"B")]),m("mo",{stretchy:"false"},"("),m("mi",null,"M"),m("mo",{stretchy:"false"},")")])])],-1),m("p",null,[s("一般的加密算法并不满足这个特性,但同模的RSA算法可以。 RSA算法其实是生成一对密钥"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c7B"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D452 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c2C"})]),m("mjx-mi",{class:"mjx-i",space:"2"},[m("mjx-c",{class:"mjx-c1D451 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c7D"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("mo",{fence:"false",stretchy:"false"},"{"),m("mi",null,"e"),m("mo",null,","),m("mi",null,"d"),m("mo",{fence:"false",stretchy:"false"},"}")])])]),s(",使其满足"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D452 TEX-I"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D451 TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c2261"})]),m("mjx-mn",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c31"})]),m("mjx-mspace",{style:{width:"0.444em"}}),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c6D"}),m("mjx-c",{class:"mjx-c6F"}),m("mjx-c",{class:"mjx-c64"})]),m("mjx-mspace",{style:{width:"0.333em"}}),m("mjx-mi",{class:"mjx-i",space:"2"},[m("mjx-c",{class:"mjx-c1D719 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D45B TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("mi",null,"e"),m("mi",null,"d"),m("mo",null,"≡"),m("mn",null,"1"),m("mspace",{width:"0.444em"}),m("mo",{stretchy:"false"},"("),m("mi",null,"mod"),m("mspace",{width:"0.333em"}),m("mi",null,"ϕ"),m("mo",{stretchy:"false"},"("),m("mi",null,"n"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")")])])]),s(",其中"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D45B TEX-I"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("mi",null,"n")])])]),s("是两个大质数的乘积。那么一个"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D45B TEX-I"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("mi",null,"n")])])]),s("其实可以生成多个密钥对,那么这些同模的RSA算法就满足上面所说的交换律。比如使用同模的两对密钥"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c7B"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D452 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c31"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c2C"})]),m("mjx-msub",{space:"2"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D451 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c31"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c7D"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c2C"})]),m("mjx-mo",{class:"mjx-n",space:"2"},[m("mjx-c",{class:"mjx-c7B"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D452 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c32"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c2C"})]),m("mjx-msub",{space:"2"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D451 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c32"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c7D"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("mo",{fence:"false",stretchy:"false"},"{"),m("msub",null,[m("mi",null,"e"),m("mn",null,"1")]),m("mo",null,","),m("msub",null,[m("mi",null,"d"),m("mn",null,"1")]),m("mo",{fence:"false",stretchy:"false"},"}"),m("mo",null,","),m("mo",{fence:"false",stretchy:"false"},"{"),m("msub",null,[m("mi",null,"e"),m("mn",null,"2")]),m("mo",null,","),m("msub",null,[m("mi",null,"d"),m("mn",null,"2")]),m("mo",{fence:"false",stretchy:"false"},"}")])])]),s("两次对"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("mi",null,"M")])])]),s("进行加密")],-1),m("mjx-container",{class:"MathJax",jax:"CHTML",display:"true",style:{position:"relative"}},[m("mjx-math",{display:"true",style:{"margin-left":"0","margin-right":"0"},class:"MJX-TEX","aria-hidden":"true"},[m("mjx-mstyle",null,[m("mjx-TeXAtom",{texclass:"ORD"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.026em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c32"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D438 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.026em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c31"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c28"})]),m("mjx-TeXAtom",{texclass:"ORD"},[m("mjx-msup",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"0.413em","margin-left":"0.054em"}},[m("mjx-TeXAtom",{size:"s",texclass:"ORD"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D452 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c31"})])])])])])]),m("mjx-mo",{class:"mjx-n",space:"4",rspace:"4"},[m("mjx-c",{class:"mjx-c6D"}),m("mjx-c",{class:"mjx-c6F"}),m("mjx-c",{class:"mjx-c64"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D45B TEX-I"})])]),m("mjx-msup",null,[m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-c29"})]),m("mjx-script",{style:{"vertical-align":"0.413em"}},[m("mjx-TeXAtom",{size:"s",texclass:"ORD"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D452 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c32"})])])])])])]),m("mjx-mo",{class:"mjx-n",space:"4",rspace:"4"},[m("mjx-c",{class:"mjx-c6D"}),m("mjx-c",{class:"mjx-c6F"}),m("mjx-c",{class:"mjx-c64"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D45B TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-msup",{space:"4"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"0.413em","margin-left":"0.054em"}},[m("mjx-TeXAtom",{size:"s",texclass:"ORD"},[m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D452 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c31"})])])]),m("mjx-mo",{class:"mjx-n"},[m("mjx-c",{class:"mjx-cD7"})]),m("mjx-msub",null,[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D452 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"-0.15em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c32"})])])])])])]),m("mjx-mo",{class:"mjx-n",space:"4",rspace:"4"},[m("mjx-c",{class:"mjx-c6D"}),m("mjx-c",{class:"mjx-c6F"}),m("mjx-c",{class:"mjx-c64"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D45B TEX-I"})])])])]),m("mjx-assistive-mml",{unselectable:"on",display:"block"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML",display:"block"},[m("mstyle",{displaystyle:"true",scriptlevel:"0"},[m("mrow",{"data-mjx-texclass":"ORD"},[m("msub",null,[m("mi",null,"E"),m("mn",null,"2")]),m("mo",{stretchy:"false"},"("),m("msub",null,[m("mi",null,"E"),m("mn",null,"1")]),m("mo",{stretchy:"false"},"("),m("mi",null,"M"),m("mo",{stretchy:"false"},")"),m("mo",{stretchy:"false"},")"),m("mo",null,"="),m("mo",{stretchy:"false"},"("),m("mrow",{"data-mjx-texclass":"ORD"},[m("msup",null,[m("mi",null,"M"),m("mrow",{"data-mjx-texclass":"ORD"},[m("msub",null,[m("mi",null,"e"),m("mn",null,"1")])])]),m("mo",{lspace:"thickmathspace",rspace:"thickmathspace"},"mod"),m("mi",null,"n")]),m("msup",null,[m("mo",{stretchy:"false"},")"),m("mrow",{"data-mjx-texclass":"ORD"},[m("msub",null,[m("mi",null,"e"),m("mn",null,"2")])])]),m("mo",{lspace:"thickmathspace",rspace:"thickmathspace"},"mod"),m("mi",null,"n"),m("mo",null,"="),m("msup",null,[m("mi",null,"M"),m("mrow",{"data-mjx-texclass":"ORD"},[m("msub",null,[m("mi",null,"e"),m("mn",null,"1")]),m("mo",null,"×"),m("msub",null,[m("mi",null,"e"),m("mn",null,"2")])])]),m("mo",{lspace:"thickmathspace",rspace:"thickmathspace"},"mod"),m("mi",null,"n")])])])])],-1),m("p",null,[s("可见加密顺序并不影响结果,这个协议可以很容易扩展到多人扑克游戏,多人之后,第一个玩家"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-TeXAtom",{texclass:"ORD"},[m("mjx-mi",{class:"mjx-cal mjx-i"},[m("mjx-c",{class:"mjx-c50 TEX-C"})])]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.037em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c31"})])])])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mrow",{"data-mjx-texclass":"ORD"},[m("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"P")]),m("mn",null,"1")])])])]),s("比较特殊,他承担洗牌的任务,然后加密后发给下一个玩家"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-TeXAtom",{texclass:"ORD"},[m("mjx-mi",{class:"mjx-cal mjx-i"},[m("mjx-c",{class:"mjx-c50 TEX-C"})])]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.037em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c32"})])])])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mrow",{"data-mjx-texclass":"ORD"},[m("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"P")]),m("mn",null,"2")])])])]),s(",执行协议中第2到第4步,从收到的牌中随机挑出自己要的牌,加密后送给"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-TeXAtom",{texclass:"ORD"},[m("mjx-mi",{class:"mjx-cal mjx-i"},[m("mjx-c",{class:"mjx-c50 TEX-C"})])]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.037em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c31"})])])])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mrow",{"data-mjx-texclass":"ORD"},[m("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"P")]),m("mn",null,"1")])])])]),s("解密,然后把剩下的牌发给下一个玩家"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-TeXAtom",{texclass:"ORD"},[m("mjx-mi",{class:"mjx-cal mjx-i"},[m("mjx-c",{class:"mjx-c50 TEX-C"})])]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.037em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c33"})])])])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mrow",{"data-mjx-texclass":"ORD"},[m("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"P")]),m("mn",null,"3")])])])]),s(","),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-TeXAtom",{texclass:"ORD"},[m("mjx-mi",{class:"mjx-cal mjx-i"},[m("mjx-c",{class:"mjx-c50 TEX-C"})])]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.037em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c33"})])])])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mrow",{"data-mjx-texclass":"ORD"},[m("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"P")]),m("mn",null,"3")])])])]),s("同样执行第2到4步,以此类推,最后"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-msub",null,[m("mjx-TeXAtom",{texclass:"ORD"},[m("mjx-mi",{class:"mjx-cal mjx-i"},[m("mjx-c",{class:"mjx-c50 TEX-C"})])]),m("mjx-script",{style:{"vertical-align":"-0.15em","margin-left":"-0.037em"}},[m("mjx-mn",{class:"mjx-n",size:"s"},[m("mjx-c",{class:"mjx-c31"})])])])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("msub",null,[m("mrow",{"data-mjx-texclass":"ORD"},[m("mi",{"data-mjx-variant":"-tex-calligraphic",mathvariant:"script"},"P")]),m("mn",null,"1")])])])]),s("所需要的牌由最后一个玩家负责抽取。 这个算法公开后,很快就有人发现其中的漏洞,就是RSA算法很可能会泄露扑克牌的信息!如果牌面数字"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("mi",null,"M")])])]),s("是"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D45B TEX-I"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("mi",null,"n")])])]),s("的二次剩余,那么加密后的信息"),m("mjx-container",{class:"MathJax",jax:"CHTML",style:{position:"relative"}},[m("mjx-math",{class:"MJX-TEX","aria-hidden":"true"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D436 TEX-I"})]),m("mjx-mo",{class:"mjx-n",space:"4"},[m("mjx-c",{class:"mjx-c3D"})]),m("mjx-msup",{space:"4"},[m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D440 TEX-I"})]),m("mjx-script",{style:{"vertical-align":"0.363em","margin-left":"0.054em"}},[m("mjx-mi",{class:"mjx-i",size:"s"},[m("mjx-c",{class:"mjx-c1D452 TEX-I"})])])]),m("mjx-mo",{class:"mjx-n",space:"4",rspace:"4"},[m("mjx-c",{class:"mjx-c6D"}),m("mjx-c",{class:"mjx-c6F"}),m("mjx-c",{class:"mjx-c64"})]),m("mjx-mi",{class:"mjx-i"},[m("mjx-c",{class:"mjx-c1D45B TEX-I"})])]),m("mjx-assistive-mml",{unselectable:"on",display:"inline"},[m("math",{xmlns:"http://www.w3.org/1998/Math/MathML"},[m("mi",null,"C"),m("mo",null,"="),m("msup",null,[m("mi",null,"M"),m("mi",null,"e")]),m("mo",{lspace:"thickmathspace",rspace:"thickmathspace"},"mod"),m("mi",null,"n")])])]),s("也是n的二次剩余,尽管这种泄露微乎其微(可能只有一个bit),但在某些关键场合也是致命的,所以后来有很多种其他Mental Poker协议出现,有兴趣的朋友可以参考"),m("a",{href:"https://crises-deim.urv.cat/web/docs/publications/theses/jCastella.pdf",target:"_blank",rel:"noopener noreferrer"},"这篇文章")],-1),a('有意思的是,尽管目前已经有多种严密的算法来解决扑克牌的去中心化问题,但我们仍然没有看到真的有产品在实际中使用这些协议。这是由于如果想实现真正的去中心化游戏平台,除了刚才说的这些安全协议之外,还需要有一大堆辅助的服务,比如P2P网络基础,玩家匹配,积分,支付等系统,这些系统的复杂度还很难实现去中心化。但区块链和比特币出现之后情况就不同了,2012年,一个使用比特币进行赌博的游戏平台中本聪筛子出现了,玩法很简单,玩家给系统提供的比特币钱包转账一定金额的比特币,这笔交易会在区块链网络里会产生一条公开的记录,系统根据这条交易记录的ID计算出一个0到65535之间的幸运数字,系统根据这个数字按照一定的赔率付给玩家比特币,或者收走玩家的比特币。
不难看出,中本聪筛子其实是基于它的中心系统运行的,而以太坊和智能合约出现之后我们距离去中心化又前进了一步,以太坊同样也是以区块链作为基础的去中心化网络,不同的是,它可以支持一种叫做智能合约的特殊数据在链上运行,一份智能合约可以看作是一段代码,比如两个人要打一个赌,那么双方可以把赌金和获胜的判断条件写到智能合约代码中,发布到以太坊上,由系统来判断哪方获胜并自动把赌金转给获胜的一方,由于这个判断的运行是放在整个区块链上运行的,所以可以视作是去中心化的。
比如etheroll这个平台就是一个利用以太坊智能合约进行赌博的平台,它的玩法和中本聪筛子很类似,也是挑选一个赔率,向指定钱包发送一定数量的以太币开始游戏,然后这个系统会调用发送一份智能合约到以太坊上,合约里会产生一个0到100的随机数,只要你的随机数小于赔率对应的数值,那么系统就会按照赔率付给你对应得以太币。但是,这个随机数如何产生呢?这就要用到以太坊中的“预言机”机制,简单来说,预言机其实就是区块链和显示网络的“连接器”,在普通的智能合约代码里,是不能调用网络函数的,这是由于区块链数据一旦生成,就不能再做任何修改,但预言机提供了一些特殊的合约,其他合约可以通过调用其代码来获取互联网数据,比如随机数、股票数据、天气甚至欧洲杯的结果,在Etheroll的智能合约代码里,就是通过调用www.oraclize.it提供的智能合约,从random.org获取的随机数,而这两个机构都是大家公信的机构。
但智能合约是有高昂的代价的,根据智能合约的复杂程序,编写者需要支付一定数量的费用(称为Gas)才能提交合约,而且以目前以太坊的机制,即使像扔筛子这样的一次性简单操作,所需要编写的智能合约已经非常复杂了。如果想完成一个去中心化的德州扑克几乎是完全不可能的,就看有没有新的技术平台能够实现这一点了。
',4)]))}const u=c(t,[["render",n],["__file","MentalPoker02.html.vue"]]),h=JSON.parse('{"path":"/blog/2025/02/MentalPoker02.html","title":"从抛币协议到智能合约(二)","lang":"zh-CN","frontmatter":{"title":"从抛币协议到智能合约(二)","tags":"数学 加密","prev":{"text":"从抛币协议到智能合约(一)","link":"MentalPoker01.md"}},"headers":[],"git":{"updatedTime":1740225290000,"contributors":[{"name":"thejinchao","username":"thejinchao","email":"thejinchao@gmail.com","commits":1,"url":"https://github.com/thejinchao"}]},"filePathRelative":"blog/2025/02/MentalPoker02.md"}');export{u as comp,h as data};