Files
thejinchao.github.io/note/cryptography/flip_coin.html
T

44 lines
66 KiB
HTML
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.
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="generator" content="VuePress 2.0.0-rc.19" />
<style>
:root {
--vp-c-bg: #fff;
}
[data-theme='dark'] {
--vp-c-bg: #1b1b1f;
}
html,
body {
background-color: var(--vp-c-bg);
}
</style>
<script>
const useChoice = localStorage.getItem('vuepress-color-scheme')
const systemStatus =
'matchMedia' in window
? window.matchMedia('(prefers-color-scheme: dark)').matches
: false
if (useChoice === 'light') {
document.documentElement.dataset.theme = 'light'
} else if (useChoice === 'dark' || systemStatus) {
document.documentElement.dataset.theme = 'dark'
}
</script>
<title>抛币协议 | 我的博客和笔记</title><meta name="description" content="理性派,数学,物理,程序">
<link rel="preload" href="/assets/style-Bg6yitsb.css" as="style"><link rel="stylesheet" href="/assets/style-Bg6yitsb.css">
<link rel="modulepreload" href="/assets/app-BVb9so0E.js"><link rel="modulepreload" href="/assets/flip_coin.html-PtExxtTI.js">
<link rel="prefetch" href="/assets/about.html-ZiHDgQ_C.js" as="script"><link rel="prefetch" href="/assets/index.html-Cae9N-9N.js" as="script"><link rel="prefetch" href="/assets/index.html-BHJ_qPlO.js" as="script"><link rel="prefetch" href="/assets/index.html-MvKFEBv7.js" as="script"><link rel="prefetch" href="/assets/index.html-lGIW6A6B.js" as="script"><link rel="prefetch" href="/assets/mental_poker.html-DFUSr5Lb.js" as="script"><link rel="prefetch" href="/assets/rsa.html-B5Yas4cz.js" as="script"><link rel="prefetch" href="/assets/index.html-CMfyMjc0.js" as="script"><link rel="prefetch" href="/assets/index.html-BSoZH9am.js" as="script"><link rel="prefetch" href="/assets/group.html-Cwq8l5Iy.js" as="script"><link rel="prefetch" href="/assets/index.html-CAwKH4fN.js" as="script"><link rel="prefetch" href="/assets/number_theory_1.html-IsIrbWLd.js" as="script"><link rel="prefetch" href="/assets/number_theory_2.html-Cc2qcc5X.js" as="script"><link rel="prefetch" href="/assets/number_theory_3.html-CMeYnaGP.js" as="script"><link rel="prefetch" href="/assets/probability.html-Br461-CE.js" as="script"><link rel="prefetch" href="/assets/symbol.html-B-vgucyP.js" as="script"><link rel="prefetch" href="/assets/DH.html-BO0XveIQ.js" as="script"><link rel="prefetch" href="/assets/Ellipse.html-q3VlGnJZ.js" as="script"><link rel="prefetch" href="/assets/Fibonacci.html-gLAmraFs.js" as="script"><link rel="prefetch" href="/assets/JPEG001.html-CmHhqHpU.js" as="script"><link rel="prefetch" href="/assets/JPEG002.html-DN-bIZd0.js" as="script"><link rel="prefetch" href="/assets/JPEG003.html-DpEK5cZe.js" as="script"><link rel="prefetch" href="/assets/JPEG004.html-DtjYyVnd.js" as="script"><link rel="prefetch" href="/assets/JPEG005.html-Ba6k8RHA.js" as="script"><link rel="prefetch" href="/assets/Martingle.html-Car3Qc8l.js" as="script"><link rel="prefetch" href="/assets/MentalPoker01.html-jiT189Ii.js" as="script"><link rel="prefetch" href="/assets/MentalPoker02.html-Ca70sQYL.js" as="script"><link rel="prefetch" href="/assets/RandRound.html-ScIQb8gt.js" as="script"><link rel="prefetch" href="/assets/SPH001.html-BFkhb8r7.js" as="script"><link rel="prefetch" href="/assets/SPH002.html-CyYD__Xa.js" as="script"><link rel="prefetch" href="/assets/SPH003.html-CU-1vQK1.js" as="script"><link rel="prefetch" href="/assets/SPH004.html-Bgm0CKgf.js" as="script"><link rel="prefetch" href="/assets/SegmentCircle.html-CwiKgF0w.js" as="script"><link rel="prefetch" href="/assets/index.html-Bo0rTWYB.js" as="script"><link rel="prefetch" href="/assets/ibl_01.html-TmVmuDV8.js" as="script"><link rel="prefetch" href="/assets/ibl_02.html-BolNByWo.js" as="script"><link rel="prefetch" href="/assets/index.html-Ch2GUk9M.js" as="script"><link rel="prefetch" href="/assets/index.html-BRtCC5PE.js" as="script"><link rel="prefetch" href="/assets/math_01.html-BteV6atK.js" as="script"><link rel="prefetch" href="/assets/math_02.html-BjwfMGet.js" as="script"><link rel="prefetch" href="/assets/math_03.html-DBBLa2bx.js" as="script"><link rel="prefetch" href="/assets/transform_01.html-BCLnK19u.js" as="script"><link rel="prefetch" href="/assets/transform_02.html-Cq0dDsxf.js" as="script"><link rel="prefetch" href="/assets/transform_03.html-DhbbSVET.js" as="script"><link rel="prefetch" href="/assets/transform_04.html-CTLyzJta.js" as="script"><link rel="prefetch" href="/assets/function.html-BSqI2YcK.js" as="script"><link rel="prefetch" href="/assets/grammar.html-Di66OeDl.js" as="script"><link rel="prefetch" href="/assets/helloworld.html-DEkdpcZa.js" as="script"><link rel="prefetch" href="/assets/index.html-_9aIK9-1.js" as="script"><link rel="prefetch" href="/assets/object_and_class.html-tiveqRlA.js" as="script"><link rel="prefetch" href="/assets/BRDF.html-ByrfVC6i.js" as="script"><link rel="prefetch" href="/assets/illumination_model_01.html-B-5kJUih.js" as="script"><link rel="prefetch" href="/assets/luminosity.html-DQpPysca.js" as="script"><link rel="prefetch" href="/assets/microfacets_1.html-CtszNcfL.js" as="script"><link rel="prefetch" href="/assets/microfacets_2.html-DgRepHWF.js" as="script"><link rel="prefetch" href="/assets/microfacets_3.html-Cm6trF3h.js" as="script"><link rel="prefetch" href="/assets/render_function_1.html-CNqIbg71.js" as="script"><link rel="prefetch" href="/assets/404.html-CU4Il75a.js" as="script"><link rel="prefetch" href="/assets/setupDevtools-7MC2TMWH-GMJHWgwm.js" as="script">
</head>
<body>
<div id="app"><!--[--><div class="vp-theme-container external-link-icon" vp-container><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/"><img class="vp-site-logo" src="/favicon.png" alt="我的博客和笔记"><span class="vp-site-name vp-hide-mobile" aria-hidden="true">我的博客和笔记</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="首页"><!--[--><!--[--><!--]--><!--]-->首页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/blog/" aria-label="文章"><!--[--><!--[--><!--]--><!--]-->文章<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="开源项目"><span class="title">开源项目</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="开源项目"><span class="title">开源项目</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://github.com/thejinchao/turbolink" aria-label="TurboLink" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->TurboLink<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://github.com/thejinchao/TinyEncrypt" aria-label="TinyEncrypt" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->TinyEncrypt<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://github.com/thejinchao/ue5-style-guide" aria-label="UnrealStyleGuide" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->UnrealStyleGuide<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://github.com/thejinchao/AxTrace" aria-label="AxTrace" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->AxTrace<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://github.com/thejinchao/cyclone" aria-label="Cyclone" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Cyclone<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="个人笔记"><span class="title">个人笔记</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="个人笔记"><span class="title">个人笔记</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/note/math/" aria-label="数学相关"><!--[--><!--[--><!--]--><!--]-->数学相关<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/note/graphics/" aria-label="图形学"><!--[--><!--[--><!--]--><!--]-->图形学<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/note/cryptography/" aria-label="密码学"><!--[--><!--[--><!--]--><!--]-->密码学<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/note/language/" aria-label="编程语言"><!--[--><!--[--><!--]--><!--]-->编程语言<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/about.html" aria-label="关于"><!--[--><!--[--><!--]--><!--]-->关于<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><!----></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="首页"><!--[--><!--[--><!--]--><!--]-->首页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/blog/" aria-label="文章"><!--[--><!--[--><!--]--><!--]-->文章<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="开源项目"><span class="title">开源项目</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="开源项目"><span class="title">开源项目</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://github.com/thejinchao/turbolink" aria-label="TurboLink" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->TurboLink<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://github.com/thejinchao/TinyEncrypt" aria-label="TinyEncrypt" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->TinyEncrypt<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://github.com/thejinchao/ue5-style-guide" aria-label="UnrealStyleGuide" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->UnrealStyleGuide<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://github.com/thejinchao/AxTrace" aria-label="AxTrace" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->AxTrace<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://github.com/thejinchao/cyclone" aria-label="Cyclone" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Cyclone<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="个人笔记"><span class="title">个人笔记</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="个人笔记"><span class="title">个人笔记</span><span class="right arrow"></span></button><ul style="display:none;" class="vp-navbar-dropdown"><!--[--><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/note/math/" aria-label="数学相关"><!--[--><!--[--><!--]--><!--]-->数学相关<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/note/graphics/" aria-label="图形学"><!--[--><!--[--><!--]--><!--]-->图形学<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link route-link-active auto-link" href="/note/cryptography/" aria-label="密码学"><!--[--><!--[--><!--]--><!--]-->密码学<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="route-link auto-link" href="/note/language/" aria-label="编程语言"><!--[--><!--[--><!--]--><!--]-->编程语言<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/about.html" aria-label="关于"><!--[--><!--[--><!--]--><!--]-->关于<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="vp-sidebar-items"><!--[--><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading collapsible">我的文章 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><p tabindex="0" class="vp-sidebar-item collapsible">从抛币协议到智能合约 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/MentalPoker01.html" aria-label="Part1"><!--[--><!--[--><!--]--><!--]-->Part1<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/MentalPoker02.html" aria-label="Part2"><!--[--><!--[--><!--]--><!--]-->Part2<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item collapsible">JPEG算法解密 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/JPEG001.html" aria-label="Part1"><!--[--><!--[--><!--]--><!--]-->Part1<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/JPEG002.html" aria-label="Part2"><!--[--><!--[--><!--]--><!--]-->Part2<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/JPEG003.html" aria-label="Part3"><!--[--><!--[--><!--]--><!--]-->Part3<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/JPEG004.html" aria-label="Part4"><!--[--><!--[--><!--]--><!--]-->Part4<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/JPEG005.html" aria-label="Part5"><!--[--><!--[--><!--]--><!--]-->Part5<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="auto-link external-link vp-sidebar-item" href="http://github.com/thejinchao/jpeg_encoder" aria-label="Github" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Github<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item collapsible">SPH算法简介 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/SPH001.html" aria-label="Part1"><!--[--><!--[--><!--]--><!--]-->Part1<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/SPH002.html" aria-label="Part2"><!--[--><!--[--><!--]--><!--]-->Part2<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/SPH003.html" aria-label="Part3"><!--[--><!--[--><!--]--><!--]-->Part3<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/SPH004.html" aria-label="Part4"><!--[--><!--[--><!--]--><!--]-->Part4<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="auto-link external-link vp-sidebar-item" href="https://github.com/thejinchao/fluid" aria-label="Github" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Github<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/Martingle.html" aria-label="赌博中的数学:Martingle策略"><!--[--><!--[--><!--]--><!--]-->赌博中的数学:Martingle策略<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/RandRound.html" aria-label="如何生成一个随机的圆形"><!--[--><!--[--><!--]--><!--]-->如何生成一个随机的圆形<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/DH.html" aria-label="一个简单的DH密钥协商算法的实现"><!--[--><!--[--><!--]--><!--]-->一个简单的DH密钥协商算法的实现<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/SegmentCircle.html" aria-label="如何计算线段和圆的交点"><!--[--><!--[--><!--]--><!--]-->如何计算线段和圆的交点<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/Ellipse.html" aria-label="一道数学趣题"><!--[--><!--[--><!--]--><!--]-->一道数学趣题<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/blog/2025/02/Fibonacci.html" aria-label="斐波那契数列和1/89"><!--[--><!--[--><!--]--><!--]-->斐波那契数列和1/89<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading collapsible">开源项目 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="auto-link external-link vp-sidebar-item" href="https://github.com/thejinchao/turbolink" aria-label="TurboLink" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->TurboLink<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="auto-link external-link vp-sidebar-item" href="https://github.com/thejinchao/TinyEncrypt" aria-label="TinyEncrypt" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->TinyEncrypt<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="auto-link external-link vp-sidebar-item" href="https://github.com/thejinchao/ue5-style-guide" aria-label="UnrealStyleGuide" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->UnrealStyleGuide<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="auto-link external-link vp-sidebar-item" href="https://github.com/thejinchao/AxTrace" aria-label="AxTrace" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->AxTrace<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="auto-link external-link vp-sidebar-item" href="https://github.com/thejinchao/cyclone" aria-label="Cyclone" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Cyclone<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading active collapsible">学习笔记 <span class="down arrow"></span></p><ul style="" class="vp-sidebar-children"><!--[--><li><p tabindex="0" class="vp-sidebar-item collapsible">数学相关 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/note/math/symbol.html" aria-label="常用数学符号"><!--[--><!--[--><!--]--><!--]-->常用数学符号<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/math/group.html" aria-label="群"><!--[--><!--[--><!--]--><!--]-->群<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/math/number_theory_1.html" aria-label="数论(一)"><!--[--><!--[--><!--]--><!--]-->数论(一)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/math/number_theory_2.html" aria-label="数论(二)"><!--[--><!--[--><!--]--><!--]-->数论(二)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/math/number_theory_3.html" aria-label="数论(三)"><!--[--><!--[--><!--]--><!--]-->数论(三)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/math/probability.html" aria-label="概率"><!--[--><!--[--><!--]--><!--]-->概率<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item active collapsible">密码学 <span class="down arrow"></span></p><ul style="" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/note/cryptography/rsa.html" aria-label="RSA"><!--[--><!--[--><!--]--><!--]-->RSA<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link route-link-active auto-link vp-sidebar-item active" href="/note/cryptography/flip_coin.html" aria-label="抛币协议"><!--[--><!--[--><!--]--><!--]-->抛币协议<!--[--><!--[--><!--]--><!--]--></a><ul style="" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="#_1-使用单向函数" aria-label="1. 使用单向函数"><!--[--><!--[--><!--]--><!--]-->1. 使用单向函数<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="#_2-使用满足交换律的加密算法" aria-label="2. 使用满足交换律的加密算法"><!--[--><!--[--><!--]--><!--]-->2. 使用满足交换律的加密算法<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="#_3-使用二次剩余" aria-label="3. 使用二次剩余"><!--[--><!--[--><!--]--><!--]-->3. 使用二次剩余<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="#_4-使用雅可比符号" aria-label="4. 使用雅可比符号"><!--[--><!--[--><!--]--><!--]-->4. 使用雅可比符号<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/cryptography/mental_poker.html" aria-label="智能扑克协议"><!--[--><!--[--><!--]--><!--]-->智能扑克协议<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item collapsible">图形学 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><p tabindex="0" class="vp-sidebar-item collapsible">数学基础 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/math/math_01.html" aria-label="矢量"><!--[--><!--[--><!--]--><!--]-->矢量<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/math/math_02.html" aria-label="矩阵"><!--[--><!--[--><!--]--><!--]-->矩阵<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/math/math_03.html" aria-label="立体角"><!--[--><!--[--><!--]--><!--]-->立体角<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/math/transform_01.html" aria-label="几何变换(一)"><!--[--><!--[--><!--]--><!--]-->几何变换(一)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/math/transform_02.html" aria-label="几何变换(二)"><!--[--><!--[--><!--]--><!--]-->几何变换(二)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/math/transform_03.html" aria-label="法线变换"><!--[--><!--[--><!--]--><!--]-->法线变换<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/math/transform_04.html" aria-label="摄像机变换"><!--[--><!--[--><!--]--><!--]-->摄像机变换<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item collapsible">光照模型 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/classic/illumination_model_01.html" aria-label="传统光照模型"><!--[--><!--[--><!--]--><!--]-->传统光照模型<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/luminosity/luminosity.html" aria-label="光度学"><!--[--><!--[--><!--]--><!--]-->光度学<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/BRDF/BRDF.html" aria-label="双向反射分布函数(BRDF)"><!--[--><!--[--><!--]--><!--]-->双向反射分布函数(BRDF)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/microfacets/microfacets_1.html" aria-label="微平面理论(一)"><!--[--><!--[--><!--]--><!--]-->微平面理论(一)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/microfacets/microfacets_2.html" aria-label="微平面理论(二)"><!--[--><!--[--><!--]--><!--]-->微平面理论(二)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/microfacets/microfacets_3.html" aria-label="微平面理论(三)"><!--[--><!--[--><!--]--><!--]-->微平面理论(三)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/illumination_model/render_function/render_function_1.html" aria-label="光照方程"><!--[--><!--[--><!--]--><!--]-->光照方程<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item collapsible">环境光渲染 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/image_based_lighting/ibl_01.html" aria-label="环境光渲染(一)"><!--[--><!--[--><!--]--><!--]-->环境光渲染(一)<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/graphics/image_based_lighting/ibl_02.html" aria-label="环境光渲染(二)"><!--[--><!--[--><!--]--><!--]-->环境光渲染(二)<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item collapsible">编程语言 <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><p tabindex="0" class="vp-sidebar-item collapsible">JavaScript <span class="right arrow"></span></p><ul style="display:none;" class="vp-sidebar-children"><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/note/language/javascript/helloworld.html" aria-label="环境搭建"><!--[--><!--[--><!--]--><!--]-->环境搭建<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/language/javascript/grammar.html" aria-label="基本语法"><!--[--><!--[--><!--]--><!--]-->基本语法<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/language/javascript/function.html" aria-label="函数"><!--[--><!--[--><!--]--><!--]-->函数<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/note/language/javascript/object_and_class.html" aria-label="对象和类"><!--[--><!--[--><!--]--><!--]-->对象和类<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><!--]--></ul></li><!--]--></ul></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-page"><!--[--><!--]--><div vp-content><!--[--><!--]--><div><h1 id="抛币协议" tabindex="-1"><a class="header-anchor" href="#抛币协议"><span>抛币协议</span></a></h1><hr><h2 id="_1-使用单向函数" tabindex="-1"><a class="header-anchor" href="#_1-使用单向函数"><span>1. 使用单向函数</span></a></h2><ol><li>Alice和Bob各自选择一个随机字符串,比如&quot;ljngjkrjgnfdudiudd&quot; 和 &quot;gfdgdfjkherfsfsd&quot;</li><li>Alice随机生成一个抛硬币的结果,比如&quot;tail&quot;</li><li>Bob把自己的随机字符串发送给Alice</li><li>Alice把抛币结果和两个人的随机字符串合并成一个新的字符串,例如&quot;tail ljngjkrjgnfdudiudd gfdgdfjkherfsfsd&quot;,并且把这个字符串的hash值&quot;59dea408d43183a3937957e71a4bcacc616d9cbc&quot;发送给Bob</li><li>Alice问Bob: “你猜是head还是tail&quot;?</li><li>Bob猜一个结果,比如&quot;head&quot;</li><li>Alice告诉告诉Bob他猜错了,并且出示完整的字符串</li></ol><h2 id="_2-使用满足交换律的加密算法" tabindex="-1"><a class="header-anchor" href="#_2-使用满足交换律的加密算法"><span>2. 使用满足交换律的加密算法</span></a></h2><ol><li>Alice和Bob通过别的协议协商出各自的RSA密钥对<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mo class="mjx-n"><mjx-c class="mjx-c7B"></mjx-c></mjx-mo><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D452 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44E TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-msub space="2"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D451 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44E TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="2"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c7D"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="2"><mjx-c class="mjx-c7B"></mjx-c></mjx-mo><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D452 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-msub space="2"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D451 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="2"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c7D"></mjx-c></mjx-mo></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mo fence="false" stretchy="false">{</mo><msub><mi>e</mi><mi>a</mi></msub><mo>,</mo><msub><mi>d</mi><mi>a</mi></msub><mo>,</mo><mi>n</mi><mo fence="false" stretchy="false">}</mo><mo>,</mo><mo fence="false" stretchy="false">{</mo><msub><mi>e</mi><mi>b</mi></msub><mi>b</mi><mo>,</mo><msub><mi>d</mi><mi>b</mi></msub><mo>,</mo><mi>n</mi><mo fence="false" stretchy="false">}</mo></math></mjx-assistive-mml></mjx-container>, 满足<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D452 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44E TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D451 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44E TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c2261"></mjx-c></mjx-mo><mjx-msub space="4"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D452 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D451 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c2261"></mjx-c></mjx-mo><mjx-mn class="mjx-n" space="4"><mjx-c class="mjx-c31"></mjx-c></mjx-mn><mjx-mspace style="width:0.444em;"></mjx-mspace><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-mi class="mjx-n"><mjx-c class="mjx-c6D"></mjx-c><mjx-c class="mjx-c6F"></mjx-c><mjx-c class="mjx-c64"></mjx-c></mjx-mi><mjx-mspace style="width:0.333em;"></mjx-mspace><mjx-mi class="mjx-i" space="2"><mjx-c class="mjx-c1D719 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45D TEX-I"></mjx-c></mjx-mi><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45E TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>e</mi><mi>a</mi></msub><msub><mi>d</mi><mi>a</mi></msub><mo>≡</mo><msub><mi>e</mi><mi>b</mi></msub><msub><mi>d</mi><mi>b</mi></msub><mo>≡</mo><mn>1</mn><mspace width="0.444em"></mspace><mo stretchy="false">(</mo><mi>mod</mi><mspace width="0.333em"></mspace><mi>ϕ</mi><mo stretchy="false">(</mo><mi>p</mi><mi>q</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo></math></mjx-assistive-mml></mjx-container></li><li>Alice生成两份消息<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D440 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;margin-left:-0.081em;"><mjx-mn class="mjx-n" size="s"><mjx-c class="mjx-c31"></mjx-c></mjx-mn></mjx-script></mjx-msub></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>M</mi><mn>1</mn></msub></math></mjx-assistive-mml></mjx-container>和<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D440 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;margin-left:-0.081em;"><mjx-mn class="mjx-n" size="s"><mjx-c class="mjx-c32"></mjx-c></mjx-mn></mjx-script></mjx-msub></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>M</mi><mn>2</mn></msub></math></mjx-assistive-mml></mjx-container>,一份表示&quot;head&quot;,一份表示&quot;tail&quot;,这些字符串还要包含双方协商好的特定字符串和随机字符串,以满足后期的验证</li><li>Alice使用自己的公钥加密这两份消息,得到<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D438 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;margin-left:-0.026em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44E TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D440 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;margin-left:-0.081em;"><mjx-mn class="mjx-n" size="s"><mjx-c class="mjx-c31"></mjx-c></mjx-mn></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-msub space="2"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D438 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;margin-left:-0.026em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44E TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D440 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;margin-left:-0.081em;"><mjx-mn class="mjx-n" size="s"><mjx-c class="mjx-c32"></mjx-c></mjx-mn></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>E</mi><mi>a</mi></msub><mo stretchy="false">(</mo><msub><mi>M</mi><mn>1</mn></msub><mo stretchy="false">)</mo><mo>,</mo><msub><mi>E</mi><mi>a</mi></msub><mo stretchy="false">(</mo><msub><mi>M</mi><mn>2</mn></msub><mo stretchy="false">)</mo></math></mjx-assistive-mml></mjx-container>,并且以随机的顺序发给Bob</li><li>Bob无法识别消息的内容,随机选择其中的一个消息<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D440 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>M</mi></math></mjx-assistive-mml></mjx-container>,并且用自己的公钥加密得到<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D438 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;margin-left:-0.026em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D438 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;margin-left:-0.026em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44E TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D440 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>E</mi><mi>b</mi></msub><mo stretchy="false">(</mo><msub><mi>E</mi><mi>a</mi></msub><mo stretchy="false">(</mo><mi>M</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo></math></mjx-assistive-mml></mjx-container>,然后发送给Alice</li><li>Alice无法识别消息中的内容,用自己的私钥解密该消息,得到<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D437 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44E TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D438 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;margin-left:-0.026em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D438 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;margin-left:-0.026em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44E TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D440 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-msub space="4"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D438 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;margin-left:-0.026em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D440 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>D</mi><mi>a</mi></msub><mo stretchy="false">(</mo><msub><mi>E</mi><mi>b</mi></msub><mo stretchy="false">(</mo><msub><mi>E</mi><mi>a</mi></msub><mo stretchy="false">(</mo><mi>M</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>=</mo><msub><mi>E</mi><mi>b</mi></msub><mo stretchy="false">(</mo><mi>M</mi><mo stretchy="false">)</mo></math></mjx-assistive-mml></mjx-container>,然后发送回Bob</li><li>Bob用自己的私钥解密消息,得到<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D437 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D438 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;margin-left:-0.026em;"><mjx-mi class="mjx-i" size="s"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D440 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="4"><mjx-c class="mjx-c1D440 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub><mi>D</mi><mi>b</mi></msub><mo stretchy="false">(</mo><msub><mi>E</mi><mi>b</mi></msub><mo stretchy="false">(</mo><mi>M</mi><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo stretchy="false">)</mo><mo>=</mo><mi>M</mi></math></mjx-assistive-mml></mjx-container>,于是Bob得到了抛币的结果并发送给Alice</li><li>双方交换各自的密钥对,以验证过程双方有没有欺诈</li></ol><h2 id="_3-使用二次剩余" tabindex="-1"><a class="header-anchor" href="#_3-使用二次剩余"><span>3. 使用二次剩余</span></a></h2><ol><li>Alice选择两个质数<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45D TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="2"><mjx-c class="mjx-c1D45E TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>p</mi><mo>,</mo><mi>q</mi></math></mjx-assistive-mml></mjx-container>,计算<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="4"><mjx-c class="mjx-c1D45E TEX-I"></mjx-c></mjx-mi><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45D TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>n</mi><mo>=</mo><mi>q</mi><mi>p</mi></math></mjx-assistive-mml></mjx-container>,然后将<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>n</mi></math></mjx-assistive-mml></mjx-container>发送给Bob</li><li>Bob随机一个数字<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3C"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="4"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi><mjx-TeXAtom texclass="ORD"><mjx-mo class="mjx-n"><mjx-c class="mjx-c2F"></mjx-c></mjx-mo></mjx-TeXAtom><mjx-mn class="mjx-n"><mjx-c class="mjx-c32"></mjx-c></mjx-mn></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>x</mi><mo>&lt;</mo><mi>n</mi><mrow data-mjx-texclass="ORD"><mo>/</mo></mrow><mn>2</mn></math></mjx-assistive-mml></mjx-container>,计算<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D466 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-msup space="4"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.363em;"><mjx-mn class="mjx-n" size="s"><mjx-c class="mjx-c32"></mjx-c></mjx-mn></mjx-script></mjx-msup><mjx-mspace style="width:0.667em;"></mjx-mspace><mjx-mi class="mjx-n" space="2"><mjx-c class="mjx-c6D"></mjx-c><mjx-c class="mjx-c6F"></mjx-c><mjx-c class="mjx-c64"></mjx-c></mjx-mi><mjx-mstyle><mjx-mspace style="width:0.167em;"></mjx-mspace></mjx-mstyle><mjx-mstyle><mjx-mspace style="width:0.167em;"></mjx-mspace></mjx-mstyle><mjx-mi class="mjx-i" space="2"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>y</mi><mo>=</mo><msup><mi>x</mi><mn>2</mn></msup><mspace width="0.667em"></mspace><mi>mod</mi><mstyle scriptlevel="0"><mspace width="0.167em"></mspace></mstyle><mstyle scriptlevel="0"><mspace width="0.167em"></mspace></mstyle><mi>n</mi></math></mjx-assistive-mml></mjx-container>,并发送<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D466 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>y</mi></math></mjx-assistive-mml></mjx-container>给Alice</li><li>Alice求解同余方程<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-msup><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.363em;"><mjx-mn class="mjx-n" size="s"><mjx-c class="mjx-c32"></mjx-c></mjx-mn></mjx-script></mjx-msup><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c2261"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="4"><mjx-c class="mjx-c1D466 TEX-I"></mjx-c></mjx-mi><mjx-mspace style="width:0.444em;"></mjx-mspace><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-mi class="mjx-n"><mjx-c class="mjx-c6D"></mjx-c><mjx-c class="mjx-c6F"></mjx-c><mjx-c class="mjx-c64"></mjx-c></mjx-mi><mjx-mspace style="width:0.333em;"></mjx-mspace><mjx-mi class="mjx-i" space="2"><mjx-c class="mjx-c1D45D TEX-I"></mjx-c></mjx-mi><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45E TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><msup><mi>x</mi><mn>2</mn></msup><mo>≡</mo><mi>y</mi><mspace width="0.444em"></mspace><mo stretchy="false">(</mo><mi>mod</mi><mspace width="0.333em"></mspace><mi>p</mi><mi>q</mi><mo stretchy="false">)</mo></math></mjx-assistive-mml></mjx-container>,得到两对解,分别是<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mo class="mjx-n"><mjx-c class="mjx-cB1"></mjx-c></mjx-mo><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mn class="mjx-n" size="s"><mjx-c class="mjx-c31"></mjx-c></mjx-mn></mjx-script></mjx-msub><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="2"><mjx-c class="mjx-cB1"></mjx-c></mjx-mo><mjx-msub><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:-0.15em;"><mjx-mn class="mjx-n" size="s"><mjx-c class="mjx-c32"></mjx-c></mjx-mn></mjx-script></mjx-msub></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mo>±</mo><msub><mi>x</mi><mn>1</mn></msub><mo>,</mo><mo>±</mo><msub><mi>x</mi><mn>2</mn></msub></math></mjx-assistive-mml></mjx-container></li><li>Alice猜测Bob所随机的数字属于哪组解,并发送该组解<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mo class="mjx-n"><mjx-c class="mjx-cB1"></mjx-c></mjx-mo><mjx-msup><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.363em;"><mjx-mo class="mjx-var" size="s"><mjx-c class="mjx-c2032"></mjx-c></mjx-mo></mjx-script></mjx-msup></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mo>±</mo><msup><mi>x</mi><mo data-mjx-alternate="1">′</mo></msup></math></mjx-assistive-mml></mjx-container>给Bob</li><li>Bob根据结果判断,如果<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-msup space="4"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.363em;"><mjx-mo class="mjx-var" size="s"><mjx-c class="mjx-c2032"></mjx-c></mjx-mo></mjx-script></mjx-msup></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>x</mi><mo>=</mo><msup><mi>x</mi><mo data-mjx-alternate="1">′</mo></msup></math></mjx-assistive-mml></mjx-container>或者<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="4"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="3"><mjx-c class="mjx-c2212"></mjx-c></mjx-mo><mjx-msup space="3"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.363em;"><mjx-mo class="mjx-var" size="s"><mjx-c class="mjx-c2032"></mjx-c></mjx-mo></mjx-script></mjx-msup></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>x</mi><mo>=</mo><mi>n</mi><mo>−</mo><msup><mi>x</mi><mo data-mjx-alternate="1">′</mo></msup></math></mjx-assistive-mml></mjx-container>,表示Alice猜对了,否则就是猜错了</li><li>Bob把结果告诉Alice,并出示<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>x</mi></math></mjx-assistive-mml></mjx-container></li><li>Alice把<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45D TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="2"><mjx-c class="mjx-c1D45E TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>p</mi><mo>,</mo><mi>q</mi></math></mjx-assistive-mml></mjx-container>告诉Bob验算</li></ol><h2 id="_4-使用雅可比符号" tabindex="-1"><a class="header-anchor" href="#_4-使用雅可比符号"><span>4. 使用雅可比符号</span></a></h2><ol><li>Bob随机选择两个质数,满足<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45D TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c2261"></mjx-c></mjx-mo><mjx-mn class="mjx-n" space="4"><mjx-c class="mjx-c33"></mjx-c></mjx-mn><mjx-mspace style="width:0.444em;"></mjx-mspace><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-mi class="mjx-n"><mjx-c class="mjx-c6D"></mjx-c><mjx-c class="mjx-c6F"></mjx-c><mjx-c class="mjx-c64"></mjx-c></mjx-mi><mjx-mspace style="width:0.333em;"></mjx-mspace><mjx-mn class="mjx-n" space="2"><mjx-c class="mjx-c34"></mjx-c></mjx-mn><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="2"><mjx-c class="mjx-c1D45E TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c2261"></mjx-c></mjx-mo><mjx-mn class="mjx-n" space="4"><mjx-c class="mjx-c33"></mjx-c></mjx-mn><mjx-mspace style="width:0.444em;"></mjx-mspace><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-mi class="mjx-n"><mjx-c class="mjx-c6D"></mjx-c><mjx-c class="mjx-c6F"></mjx-c><mjx-c class="mjx-c64"></mjx-c></mjx-mi><mjx-mspace style="width:0.333em;"></mjx-mspace><mjx-mn class="mjx-n" space="2"><mjx-c class="mjx-c34"></mjx-c></mjx-mn><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>p</mi><mo>≡</mo><mn>3</mn><mspace width="0.444em"></mspace><mo stretchy="false">(</mo><mi>mod</mi><mspace width="0.333em"></mspace><mn>4</mn><mo stretchy="false">)</mo><mo>,</mo><mi>q</mi><mo>≡</mo><mn>3</mn><mspace width="0.444em"></mspace><mo stretchy="false">(</mo><mi>mod</mi><mspace width="0.333em"></mspace><mn>4</mn><mo stretchy="false">)</mo></math></mjx-assistive-mml></mjx-container>, 计算<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="4"><mjx-c class="mjx-c1D45D TEX-I"></mjx-c></mjx-mi><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45E TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>n</mi><mo>=</mo><mi>p</mi><mi>q</mi></math></mjx-assistive-mml></mjx-container>发送给Alice</li><li>Alice随机选择一个数字<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>x</mi></math></mjx-assistive-mml></mjx-container>, 满足<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mo class="mjx-n"><mjx-c class="mjx-c67"></mjx-c><mjx-c class="mjx-c63"></mjx-c><mjx-c class="mjx-c64"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="2"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-mn class="mjx-n" space="4"><mjx-c class="mjx-c31"></mjx-c></mjx-mn></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mo data-mjx-texclass="OP" movablelimits="true">gcd</mo><mo stretchy="false">(</mo><mi>x</mi><mo>,</mo><mi>n</mi><mo stretchy="false">)</mo><mo>=</mo><mn>1</mn></math></mjx-assistive-mml></mjx-container>, 计算<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D466 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c3D"></mjx-c></mjx-mo><mjx-msup space="4"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.363em;"><mjx-mn class="mjx-n" size="s"><mjx-c class="mjx-c32"></mjx-c></mjx-mn></mjx-script></mjx-msup><mjx-mspace style="width:0.667em;"></mjx-mspace><mjx-mi class="mjx-n" space="2"><mjx-c class="mjx-c6D"></mjx-c><mjx-c class="mjx-c6F"></mjx-c><mjx-c class="mjx-c64"></mjx-c></mjx-mi><mjx-mstyle><mjx-mspace style="width:0.167em;"></mjx-mspace></mjx-mstyle><mjx-mstyle><mjx-mspace style="width:0.167em;"></mjx-mspace></mjx-mstyle><mjx-mi class="mjx-i" space="2"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>y</mi><mo>=</mo><msup><mi>x</mi><mn>2</mn></msup><mspace width="0.667em"></mspace><mi>mod</mi><mstyle scriptlevel="0"><mspace width="0.167em"></mspace></mstyle><mstyle scriptlevel="0"><mspace width="0.167em"></mspace></mstyle><mi>n</mi></math></mjx-assistive-mml></mjx-container>,把<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D466 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>y</mi></math></mjx-assistive-mml></mjx-container>发送给Bob</li><li>Bob猜测<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D43D TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="2"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>J</mi><mo stretchy="false">(</mo><mi>x</mi><mo>,</mo><mi>n</mi><mo stretchy="false">)</mo></math></mjx-assistive-mml></mjx-container>的数值<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c2208"></mjx-c></mjx-mo><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c7B"></mjx-c></mjx-mo><mjx-mo class="mjx-n"><mjx-c class="mjx-c2212"></mjx-c></mjx-mo><mjx-mn class="mjx-n"><mjx-c class="mjx-c31"></mjx-c></mjx-mn><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-mn class="mjx-n" space="2"><mjx-c class="mjx-c31"></mjx-c></mjx-mn><mjx-mo class="mjx-n"><mjx-c class="mjx-c7D"></mjx-c></mjx-mo></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>b</mi><mo>∈</mo><mo fence="false" stretchy="false">{</mo><mo>−</mo><mn>1</mn><mo>,</mo><mn>1</mn><mo fence="false" stretchy="false">}</mo></math></mjx-assistive-mml></mjx-container>,并且把<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D44F TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>b</mi></math></mjx-assistive-mml></mjx-container>发送给Alice</li><li>Alice向Bob出示<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>x</mi></math></mjx-assistive-mml></mjx-container></li><li>Bob验证<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D466 TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n" space="4"><mjx-c class="mjx-c2261"></mjx-c></mjx-mo><mjx-msup space="4"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D465 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align:0.363em;"><mjx-mn class="mjx-n" size="s"><mjx-c class="mjx-c32"></mjx-c></mjx-mn></mjx-script></mjx-msup><mjx-mspace style="width:0.444em;"></mjx-mspace><mjx-mo class="mjx-n"><mjx-c class="mjx-c28"></mjx-c></mjx-mo><mjx-mi class="mjx-n"><mjx-c class="mjx-c6D"></mjx-c><mjx-c class="mjx-c6F"></mjx-c><mjx-c class="mjx-c64"></mjx-c></mjx-mi><mjx-mspace style="width:0.333em;"></mjx-mspace><mjx-mi class="mjx-i" space="2"><mjx-c class="mjx-c1D45B TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c29"></mjx-c></mjx-mo></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>y</mi><mo>≡</mo><msup><mi>x</mi><mn>2</mn></msup><mspace width="0.444em"></mspace><mo stretchy="false">(</mo><mi>mod</mi><mspace width="0.333em"></mspace><mi>n</mi><mo stretchy="false">)</mo></math></mjx-assistive-mml></mjx-container>,并向Alice出示<mjx-container class="MathJax" jax="CHTML" style="position:relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D45D TEX-I"></mjx-c></mjx-mi><mjx-mo class="mjx-n"><mjx-c class="mjx-c2C"></mjx-c></mjx-mo><mjx-mi class="mjx-i" space="2"><mjx-c class="mjx-c1D45E TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>p</mi><mo>,</mo><mi>q</mi></math></mjx-assistive-mml></mjx-container></li></ol></div><!--[--><!--]--></div><footer class="vp-page-meta"><!----><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">Last Updated: </span><!----></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: thejinchao@gmail.com">thejinchao</span><!----><!--]--><!--]--></span></div></div></footer><nav class="vp-page-nav" aria-label="page navigation"><a class="route-link auto-link prev" href="/note/cryptography/rsa.html" aria-label="RSA"><!--[--><div class="hint"><span class="arrow left"></span> Prev</div><div class="link"><span>RSA</span></div><!--]--></a><a class="route-link auto-link next" href="/note/cryptography/mental_poker.html" aria-label="智能扑克协议"><!--[--><div class="hint">Next <span class="arrow right"></span></div><div class="link"><span>智能扑克协议</span></div><!--]--></a></nav><!--[--><!--]--></main><!--]--></div><!--[--><!----><!--]--><!--]--></div>
<script type="module" src="/assets/app-BVb9so0E.js" defer></script>
</body>
</html>