<html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8"><meta name="generator" content="pdf2htmlEX"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/css/base.min.css"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/css/fancy.min.css"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/4695671/raw.css"><script src="https://csdnimg.cn/release/download_crawler_static/js/compatibility.min.js"></script><script src="https://csdnimg.cn/release/download_crawler_static/js/pdf2htmlEX.min.js"></script><script>try{pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});}catch(e){}</script><title></title></head><body><div id="sidebar" style="display: none"><div id="outline"></div></div><div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/4695671/bg1.jpg"><div class="c x0 y1 w2 h2"><div class="t m0 x1 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0">实验<span class="_ _0"> </span><span class="ff2 sc1">1 </span>古典密码学</div><div class="t m0 x2 h4 y3 ff1 fs1 fc0 sc0 ls0 ws0">一、<span class="_"> </span>实验目的</div><div class="t m0 x3 h5 y4 ff1 fs2 fc0 sc1 ls0 ws0">通过<span class="_ _1"></span>编程<span class="_ _1"></span>实现<span class="_ _1"></span>替代<span class="_ _1"></span>密码<span class="_ _1"></span>算法<span class="_ _1"></span>和置<span class="_ _1"></span>换密<span class="_ _1"></span>码算<span class="_ _1"></span>法,<span class="_ _1"></span>加深<span class="_ _1"></span>对古<span class="_ _1"></span>典密<span class="_ _1"></span>码体<span class="_ _1"></span>制的<span class="_ _1"></span>了解<span class="_ _2"> </span>,</div><div class="t m0 x2 h5 y5 ff1 fs2 fc0 sc1 ls0 ws0">为深入学习密码学奠定基础。</div><div class="t m0 x2 h4 y6 ff1 fs1 fc0 sc0 ls0 ws0">二、<span class="_"> </span>实验原理</div><div class="t m0 x3 h5 y7 ff1 fs2 fc0 sc1 ls0 ws0">古典<span class="_ _1"></span>密码<span class="_ _1"></span>算法<span class="_ _1"></span>的主<span class="_ _1"></span>要应<span class="_ _1"></span>用对<span class="_ _1"></span>象是<span class="_ _1"></span>文字<span class="_ _1"></span>信息<span class="_ _1"></span>,利<span class="_ _1"></span>用密<span class="_ _1"></span>码算<span class="_ _1"></span>法实<span class="_ _1"></span>现文<span class="_ _1"></span>字信<span class="_ _1"></span>息的</div><div class="t m0 x2 h5 y8 ff1 fs2 fc0 sc1 ls0 ws0">加密和解密。下面主要讲两种常见的具有代表性的古典密码算法。</div><div class="t m0 x4 h5 y9 ff3 fs2 fc0 sc1 ls0 ws0">1<span class="ff1">、<span class="_ _3"> </span>替代密码</span> </div><div class="t m0 x3 h5 ya ff1 fs2 fc0 sc1 ls0 ws0">替代<span class="_ _1"></span>密码<span class="_ _1"></span>算法<span class="_ _1"></span>的原<span class="_ _1"></span>理是<span class="_ _1"></span>使用<span class="_ _1"></span>替代<span class="_ _1"></span>法进<span class="_ _1"></span>行加<span class="_ _1"></span>密,<span class="_ _1"></span>就是<span class="_ _1"></span>将明<span class="_ _1"></span>文中<span class="_ _1"></span>的字<span class="_ _1"></span>符用<span class="_ _1"></span>其他</div><div class="t m0 x2 h5 yb ff1 fs2 fc0 sc1 ls0 ws0">字符替代后形成密文。例如:明文字母<span class="_ _4"> </span><span class="ff3">a,b,c,d,</span>用<span class="_ _4"> </span><span class="ff3">d,e,f,g<span class="_ _4"> </span></span>作对应替换后形成密文<span class="ff3">.</span></div><div class="t m0 x3 h5 yc ff1 fs2 fc0 sc1 ls0 ws0">替代密<span class="_ _1"></span>码包括多种<span class="_ _1"></span>类型<span class="_ _1"></span><span class="ff3">,<span class="_ _1"></span></span>如单表替<span class="_ _1"></span>代密码、<span class="_ _1"></span>多明码替代<span class="_ _1"></span>密码、多字<span class="_ _1"></span>母替代密</div><div class="t m0 x2 h5 yd ff1 fs2 fc0 sc1 ls0 ws0">码、<span class="_ _1"></span>多表<span class="_ _1"></span>替代<span class="_ _1"></span>密码<span class="_ _1"></span>等。<span class="_ _1"></span>以单<span class="_ _1"></span>表替<span class="_ _1"></span>代密<span class="_ _1"></span>码—<span class="_ _1"></span>—恺<span class="_ _1"></span>撒密<span class="_ _1"></span>码为<span class="_ _1"></span>例。<span class="_ _1"></span>它的<span class="_ _1"></span>加密<span class="_ _1"></span>方法<span class="_ _1"></span>就是</div><div class="t m0 x2 h5 ye ff1 fs2 fc0 sc1 ls0 ws0">将<span class="_ _1"></span>明文<span class="_ _1"></span>中的<span class="_ _1"></span>每<span class="_ _1"></span>个字<span class="_ _1"></span>母<span class="_ _1"></span>用此<span class="_ _1"></span>字符<span class="_ _1"></span>在<span class="_ _1"></span>字母<span class="_ _1"></span>表<span class="_ _1"></span>中后<span class="_ _1"></span>面第<span class="_ _3"> </span><span class="ff3">k<span class="_"> </span></span>个字<span class="_ _1"></span>母替<span class="_ _1"></span>代<span class="_ _1"></span>。它<span class="_ _1"></span>的<span class="_ _1"></span>加密<span class="_ _1"></span>过程</div><div class="t m0 x2 h5 yf ff1 fs2 fc0 sc1 ls0 ws0">可以表示为下面的函数:</div><div class="t m0 x3 h5 y10 ff3 fs2 fc0 sc1 ls0 ws0">E<span class="ff1">(<span class="_ _1"></span></span>m<span class="ff1">)<span class="_ _1"></span></span>=<span class="ff1">(</span>m+k<span class="_ _1"></span><span class="ff1">)</span>modn<span class="_ _5"> </span><span class="ff1">,其<span class="_ _1"></span>中,</span>m<span class="_"> </span><span class="ff1">为明文<span class="_ _1"></span>字母在字<span class="_ _1"></span>母表<span class="_ _1"></span>中的位<span class="_ _1"></span>置数;<span class="_ _6"></span></span>n<span class="_ _4"> </span><span class="ff1">为</span></div><div class="t m0 x2 h5 y11 ff1 fs2 fc0 sc1 ls0 ws0">字母表中的字母个数;<span class="ff3">k<span class="_ _4"> </span></span>为密钥;<span class="ff3">E</span>(<span class="ff3">m</span>)为密文字母在字母表中对应的位置数。</div><div class="t m0 x4 h5 y12 ff3 fs2 fc0 sc1 ls0 ws0">2<span class="ff1">、<span class="_ _3"> </span>置换密码</span></div><div class="t m0 x3 h5 y13 ff1 fs2 fc0 sc1 ls0 ws0">置换<span class="_ _1"></span>密码<span class="_ _1"></span>算法<span class="_ _1"></span>的原<span class="_ _1"></span>理是<span class="_ _1"></span>不改<span class="_ _1"></span>变明<span class="_ _1"></span>文字<span class="_ _1"></span>符,<span class="_ _1"></span>只将<span class="_ _1"></span>字符<span class="_ _1"></span>在明<span class="_ _1"></span>文中<span class="_ _1"></span>的排<span class="_ _1"></span>列顺<span class="_ _1"></span>序改</div><div class="t m0 x2 h5 y14 ff1 fs2 fc0 sc1 ls0 ws0">变,从而实现明文信息的加密。置换密码有时又称为换位密码。</div><div class="t m0 x3 h5 y15 ff1 fs2 fc0 sc1 ls0 ws0">矩阵<span class="_ _1"></span>换位<span class="_ _1"></span>法是<span class="_ _1"></span>实现<span class="_ _1"></span>置换<span class="_ _1"></span>密码<span class="_ _1"></span>的一<span class="_ _1"></span>种常<span class="_ _1"></span>用方<span class="_ _1"></span>法。<span class="_ _1"></span>它将<span class="_ _1"></span>明文<span class="_ _1"></span>中的<span class="_ _1"></span>字母<span class="_ _1"></span>按照<span class="_ _1"></span>给定</div></div></div><div class="pi" data-data='{"ctm":[1.611850,0.000000,0.000000,1.611850,0.000000,0.000000]}'></div></div></body></html>