Files
thejinchao.github.io/assets/MentalPoker02.html-D4z5wDum.js
T

2 lines
39 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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('<h1 id="从抛币协议到智能合约-二" tabindex="-1"><a class="header-anchor" href="#从抛币协议到智能合约-二"><span>从抛币协议到智能合约(二)</span></a></h1><p>除了抛币协议,加密领域还有一个很有趣的课题和游戏的去中心化直接相关,就是<a href="https://en.wikipedia.org/wiki/Mental_poker" target="_blank" rel="noopener noreferrer">Mental Poker</a>协议,中文一般翻译成“智力扑克”,但我认为这个翻译并不准确,“Mental Poker”一词来源于1979年的一篇论文《<a href="http://people.csail.mit.edu/rivest/ShamirRivestAdleman-MentalPoker.pdf" target="_blank" rel="noopener noreferrer">Mental Poker</a>》,作者是Shamir,Rivest和Adleman(就是发明RSA算法的三位大牛),里面这么描述这个场景:</p><figure><img src="'+e+'" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>Mental这个词在这里应该是意念或者思维的意思,和盲棋是对应的,但中文中并没有“意念扑克”这样的词,所以翻译成“盲牌协议”其实更贴切一些。和象棋围棋这样的信息公开游戏不同,扑克游戏大部分都有发牌环节,玩家手中的牌是保密的,所以两位象棋大师完全可以在电话里通过“炮二平五、马八进七”来一局象棋,但扑克牌就不行了,你说手里有一对Ace,我怎么知道你没撒谎呢?<br> 所以Mental Poker协议最关键的就是洗牌和发牌这个流程,这个过程既要保证是随机和公平的,又要保证玩家的手牌的私密性,在这篇论文里给了一个巧妙的方法,先举个形象的例子:</p><blockquote><p>Alice想把一件珍宝通过信使送给Bob,但信使非常不可靠,没有锁进箱子的东西他一定会偷的,并且如果让信使拿到钥匙他也一定会去打开锁的,那在这种情况下Alice和Bob有什么办法安全的把宝物送给对方呢?答案是:Alice用箱子把宝物装进去,然后用自己的锁把箱子锁起来送给Bob,Bob收到箱子后再加上一把自己的锁,把箱子再送回给Alice,Alice收到后打开自己的锁送回给Bob,最后Bob收到箱子之后再打开自己的所,就可以拿到宝物了。</p></blockquote><p>按这个思路换成扑克牌游戏,假设Alice和Bob要玩一局扑克牌游戏,开局的时候他们都要一副牌(52张)中各抽取5张,那么过程就是这样:</p>',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('<hr><p>有意思的是,尽管目前已经有多种严密的算法来解决扑克牌的去中心化问题,但我们仍然没有看到真的有产品在实际中使用这些协议。这是由于如果想实现真正的去中心化游戏平台,除了刚才说的这些安全协议之外,还需要有一大堆辅助的服务,比如P2P网络基础,玩家匹配,积分,支付等系统,这些系统的复杂度还很难实现去中心化。但区块链和比特币出现之后情况就不同了,2012年,一个使用比特币进行赌博的游戏平台中<a href="https://www.satoshidice.com/" target="_blank" rel="noopener noreferrer">本聪筛子</a>出现了,玩法很简单,玩家给系统提供的比特币钱包转账一定金额的比特币,这笔交易会在区块链网络里会产生一条公开的记录,系统根据这条交易记录的ID计算出一个0到65535之间的幸运数字,系统根据这个数字按照一定的赔率付给玩家比特币,或者收走玩家的比特币。<br> 不难看出,中本聪筛子其实是基于它的中心系统运行的,而以太坊和智能合约出现之后我们距离去中心化又前进了一步,以太坊同样也是以区块链作为基础的去中心化网络,不同的是,它可以支持一种叫做智能合约的特殊数据在链上运行,一份智能合约可以看作是一段代码,比如两个人要打一个赌,那么双方可以把赌金和获胜的判断条件写到智能合约代码中,发布到以太坊上,由系统来判断哪方获胜并自动把赌金转给获胜的一方,由于这个判断的运行是放在整个区块链上运行的,所以可以视作是去中心化的。<br> 比如<a href="https://www.etheroll.com/" target="_blank" rel="noopener noreferrer">etheroll</a>这个平台就是一个利用以太坊智能合约进行赌博的平台,它的玩法和中本聪筛子很类似,也是挑选一个赔率,向指定钱包发送一定数量的以太币开始游戏,然后这个系统会调用发送一份智能合约到以太坊上,合约里会产生一个0到100的随机数,只要你的随机数小于赔率对应的数值,那么系统就会按照赔率付给你对应得以太币。但是,这个随机数如何产生呢?这就要用到以太坊中的“预言机”机制,简单来说,预言机其实就是区块链和显示网络的“连接器”,在普通的智能合约代码里,是不能调用网络函数的,这是由于区块链数据一旦生成,就不能再做任何修改,但预言机提供了一些特殊的合约,其他合约可以通过调用其代码来获取互联网数据,比如随机数、股票数据、天气甚至欧洲杯的结果,在<a href="https://etherscan.io/address/0x048717ea892f23fb0126f00640e2b18072efd9d2#code" target="_blank" rel="noopener noreferrer">Etheroll的智能合约代码</a>里,就是通过调用<a href="www.oraclize.it">www.oraclize.it</a>提供的智能合约,从<a href="random.org">random.org</a>获取的随机数,而这两个机构都是大家公信的机构。</p><figure><img src="'+i+'" alt="" tabindex="0" loading="lazy"><figcaption></figcaption></figure><p>但智能合约是有高昂的代价的,根据智能合约的复杂程序,编写者需要支付一定数量的费用(称为Gas)才能提交合约,而且以目前以太坊的机制,即使像扔筛子这样的一次性简单操作,所需要编写的智能合约已经非常复杂了。如果想完成一个去中心化的德州扑克几乎是完全不可能的,就看有没有新的技术平台能够实现这一点了。</p>',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};