<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>yany</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>http://www.yanyyy.cloud/</id>
  <link href="http://www.yanyyy.cloud/" rel="alternate"/>
  <link href="http://www.yanyyy.cloud/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, yany</rights>
  <subtitle>记录技术与生活</subtitle>
  <title>yany 的博客</title>
  <updated>2026-06-12T08:40:49.691Z</updated>
  <entry>
    <author>
      <name>yany</name>
    </author>
    <category term="通信编码" scheme="http://www.yanyyy.cloud/categories/%E9%80%9A%E4%BF%A1%E7%BC%96%E7%A0%81/"/>
    <category term="C" scheme="http://www.yanyyy.cloud/tags/C/"/>
    <category term="Python" scheme="http://www.yanyyy.cloud/tags/Python/"/>
    <category term="信道编码" scheme="http://www.yanyyy.cloud/tags/%E4%BF%A1%E9%81%93%E7%BC%96%E7%A0%81/"/>
    <category term="仿真" scheme="http://www.yanyyy.cloud/tags/%E4%BB%BF%E7%9C%9F/"/>
    <content>
      <![CDATA[<p>本文是《信息论与信道编码》课程的综合仿真实验记录。项目覆盖了<strong>卷积码</strong>与 <strong>Turbo 码</strong>的核心译码算法，通过不同码型、判决方式、迭代次数和码长的对比实验，直观理解 AWGN 信道下各编码方案的 BER 性能差异。</p><span id="more"></span><h2 id="综合性能对比"><a href="#综合性能对比" class="headerlink" title="综合性能对比"></a>综合性能对比</h2><p>下图展示了四种主要编码&#x2F;译码方案的性能阶梯：</p><p><img src="/img/posts/information-theory/ber-comparison.png" alt="BER Comparison"></p><ul><li><strong>Uncoded</strong>：未编码 BPSK，作为性能基准。</li><li><strong>Hard Viterbi</strong>：卷积码硬判决译码，提供基础编码增益。</li><li><strong>Soft Viterbi</strong>：卷积码软判决译码，相比硬判决有约 <strong>2dB</strong> 的显著增益。</li><li><strong>BCJR (MAP)</strong>：最大后验概率译码，理论最优的软输出算法。</li><li><strong>Turbo Code</strong>：采用迭代译码，在低信噪比下表现出极其陡峭的瀑布区。</li></ul><hr><h2 id="卷积码性能分析"><a href="#卷积码性能分析" class="headerlink" title="卷积码性能分析"></a>卷积码性能分析</h2><p>实验对比了不同约束长度 K 和不同码结构（系统码&#x2F;非系统码）在不同译码算法下的表现。</p><h3 id="硬判决-Viterbi"><a href="#硬判决-Viterbi" class="headerlink" title="硬判决 Viterbi"></a>硬判决 Viterbi</h3><p>对比 K&#x3D;3 的 (7,5)、K&#x3D;4 的 (15,13) 以及 RSC 递归系统码在硬判决下的性能。</p><p><img src="/img/posts/information-theory/hard-viterbi.png" alt="Hard Decision Viterbi"></p><p>随着约束长度 K 从 3 增加到 4，编码器的记忆深度增加，纠错能力增强，BER 曲线整体左移。</p><h3 id="软判决-Viterbi"><a href="#软判决-Viterbi" class="headerlink" title="软判决 Viterbi"></a>软判决 Viterbi</h3><p><img src="/img/posts/information-theory/soft-viterbi.png" alt="Soft Decision Viterbi"></p><p>软判决充分利用了接收端的信道可靠性信息。与硬判决相比，所有码型的性能均有大幅提升，且 K&#x3D;4 的优势在软判决下依然保持。</p><h3 id="BCJR-MAP-算法"><a href="#BCJR-MAP-算法" class="headerlink" title="BCJR (MAP) 算法"></a>BCJR (MAP) 算法</h3><p><img src="/img/posts/information-theory/bcjr-soft.png" alt="BCJR Soft Decision"></p><p>BCJR 算法输出比特级的软信息（LLR），是 Turbo 码迭代译码的核心组件。图中展示了其作为独立译码器时的优异性能。</p><hr><h2 id="Turbo-码性能分析"><a href="#Turbo-码性能分析" class="headerlink" title="Turbo 码性能分析"></a>Turbo 码性能分析</h2><p>Turbo 码的核心在于迭代译码结构。实验重点探究了<strong>交织长度</strong>、<strong>迭代次数</strong>以及<strong>级联结构</strong>对性能的影响。</p><h3 id="码长与交织增益"><a href="#码长与交织增益" class="headerlink" title="码长与交织增益"></a>码长与交织增益</h3><p>对比了从短帧（N&#x3D;256）到长帧（N&#x3D;16384）的性能变化。</p><p><img src="/img/posts/information-theory/turbo-length.png" alt="Turbo Length Comparison"></p><p><strong>交织器增益</strong>现象极其明显。随着码长 N 增加，交织器打散突发错误的能力增强，BER 曲线的”瀑布区”变得更加陡峭，误平层显著降低。</p><h3 id="迭代次数的影响"><a href="#迭代次数的影响" class="headerlink" title="迭代次数的影响"></a>迭代次数的影响</h3><p>观察 Turbo 码在 1 到 8 次迭代过程中的性能收敛情况。</p><p><img src="/img/posts/information-theory/turbo-iterations.png" alt="Turbo Iterations Comparison"></p><p>随着迭代次数增加，译码器之间交换的外部信息逐渐精确。通常在 <strong>4-8 次迭代</strong>后性能趋于饱和，继续增加迭代带来的增益逐渐减小。</p><h3 id="SCCC-vs-PCCC"><a href="#SCCC-vs-PCCC" class="headerlink" title="SCCC vs PCCC"></a>SCCC vs PCCC</h3><p>对比了两种经典的 Turbo 码级联架构。</p><p><img src="/img/posts/information-theory/turbo-codes.png" alt="Turbo Codes Structure"></p><ul><li><strong>PCCC（并行级联）</strong>：经典 Turbo 码结构，瀑布区出现较早（收敛快），但存在较高的误平层。</li><li><strong>SCCC（串行级联）</strong>：通常具有更低的误平层，适合对误码率要求极高的场景。</li></ul><hr><h2 id="项目信息"><a href="#项目信息" class="headerlink" title="项目信息"></a>项目信息</h2><ul><li>项目仓库：<a href="https://github.com/Yauanyyy/ChannelCoding-Simulations">github.com&#x2F;Yauanyyy&#x2F;ChannelCoding-Simulations</a></li><li>编码与译码算法用 C&#x2F;C++ 实现，仿真结果由 Python 统一绘图</li><li>包含 GitHub Actions 自动化仿真流水线</li></ul>]]>
    </content>
    <id>http://www.yanyyy.cloud/posts/2026/01/12/%E4%BF%A1%E9%81%93%E7%BC%96%E7%A0%81%E4%BB%BF%E7%9C%9F%E5%AE%9E%E9%AA%8C%EF%BC%9A%E4%BB%8E%E5%8D%B7%E7%A7%AF%E7%A0%81%E5%88%B0Turbo%E7%A0%81/</id>
    <link href="http://www.yanyyy.cloud/posts/2026/01/12/%E4%BF%A1%E9%81%93%E7%BC%96%E7%A0%81%E4%BB%BF%E7%9C%9F%E5%AE%9E%E9%AA%8C%EF%BC%9A%E4%BB%8E%E5%8D%B7%E7%A7%AF%E7%A0%81%E5%88%B0Turbo%E7%A0%81/"/>
    <published>2026-01-12T12:00:00.000Z</published>
    <summary>研究生信息论课程大作业，用C/C++实现卷积码和Turbo码的译码算法，在AWGN信道下对比BER性能。</summary>
    <title>信道编码仿真实验：从卷积码到Turbo码</title>
    <updated>2026-06-12T08:40:49.691Z</updated>
  </entry>
  <entry>
    <author>
      <name>yany</name>
    </author>
    <category term="信息安全" scheme="http://www.yanyyy.cloud/categories/%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8/"/>
    <category term="JavaScript" scheme="http://www.yanyyy.cloud/tags/JavaScript/"/>
    <category term="HTML5" scheme="http://www.yanyyy.cloud/tags/HTML5/"/>
    <category term="Canvas" scheme="http://www.yanyyy.cloud/tags/Canvas/"/>
    <category term="密码学" scheme="http://www.yanyyy.cloud/tags/%E5%AF%86%E7%A0%81%E5%AD%A6/"/>
    <category term="可视化" scheme="http://www.yanyyy.cloud/tags/%E5%8F%AF%E8%A7%86%E5%8C%96/"/>
    <content>
      <![CDATA[<p>本文记录了一个面向教学的加密算法 Web 演示系统。系统用纯前端技术实现了 10 种加密算法，通过分步骤的过程可视化和交互式操作面板，把原本抽象的密码学原理变得直观可感。</p><span id="more"></span><h2 id="系统概述"><a href="#系统概述" class="headerlink" title="系统概述"></a>系统概述</h2><p>这是《信息安全技术》选修课的大作业。核心思路是：每个算法都不只是”输入明文 → 输出密文”，而是让用户看到每一轮的状态变化——无论是 Feistel 网络的 L&#x2F;R 寄存器、AES 的 S 盒替换，还是视觉密码的像素扩展。</p><p>在线演示地址：<a href="https://yauanyyy.github.io/Encryption-Algorithm-Demonstration-System/">yauanyyy.github.io&#x2F;Encryption-Algorithm-Demonstration-System</a></p><h2 id="算法一览"><a href="#算法一览" class="headerlink" title="算法一览"></a>算法一览</h2><h3 id="古典密码"><a href="#古典密码" class="headerlink" title="古典密码"></a>古典密码</h3><p><strong>凯撒密码</strong>与<strong>一次性密码本</strong>展示了替换密码的两个极端：前者的安全性仅依赖于密钥空间大小（26），而后者在密钥真随机且不重用的前提下达到了信息论安全。</p><p><strong>Playfair 密码</strong>基于 5×5 矩阵进行双字母替换，系统动态展示了矩阵生成和行列置换规则的执行过程。</p><h3 id="流密码"><a href="#流密码" class="headerlink" title="流密码"></a>流密码</h3><p>基于 RC4 变体的流密码模块展示了 PRNG 密钥流生成（KSA + PRGA），并醒目提示了”禁止密钥重用”的安全原则——这是流密码在实际使用中最容易踩的坑。</p><h3 id="分组密码：DES-与-AES"><a href="#分组密码：DES-与-AES" class="headerlink" title="分组密码：DES 与 AES"></a>分组密码：DES 与 AES</h3><p><strong>DES</strong> 严格遵循 FIPS 46-3，完整展示 16 轮 Feistel 迭代，每轮 L&#x2F;R 寄存器状态可观察。<strong>AES-256</strong> 则展示 SPN 结构的四个核心操作：SubBytes、ShiftRows、MixColumns、AddRoundKey，其中 MixColumns 涉及 GF(2^8) 有限域上的多项式乘法。</p><p>两者放在一起对比，能清晰看到 Feistel 和 SPN 两种主流分组密码结构的差异。</p><h3 id="视觉密码"><a href="#视觉密码" class="headerlink" title="视觉密码"></a>视觉密码</h3><p>这是系统最有特色的模块。基于 (2, 2) 门限方案，利用 HTML5 Canvas 进行像素级操作：</p><ol><li><strong>预处理</strong>：上传图片 → 灰度化 → 二值化</li><li><strong>分发</strong>：根据概率矩阵将每个像素扩展为 2×2 的子像素块，生成两张看似噪点的分存图</li><li><strong>恢复</strong>：通过 <code>ImageData</code> 模拟两张胶片的物理叠加，逻辑 OR 对应光线遮挡</li></ol><p><strong>扩展视觉密码 (EVCS)</strong> 更进一步，允许分存图本身也是一张有意义的图像，而非完全随机的噪点。</p><h3 id="RSA-与-MD5"><a href="#RSA-与-MD5" class="headerlink" title="RSA 与 MD5"></a>RSA 与 MD5</h3><p>RSA 以教学流程演示密钥生成（选 p、q → 算 N、φ(N) → 选 e → 求 d）和模幂加解密。MD5 展示任意长度消息压缩为 128 位摘要的过程，同时科普了碰撞风险和弃用原因。</p><h2 id="技术架构"><a href="#技术架构" class="headerlink" title="技术架构"></a>技术架构</h2><p>纯静态前端，无需 Node.js 或数据库：</p><ul><li><strong>JavaScript (ES6+)</strong> 原生实现全部算法逻辑</li><li><strong>Canvas API</strong> 处理视觉密码的像素操作</li><li><strong>LocalStorage</strong> 模拟用户数据和权限管理</li><li><strong>SHA-256 加盐哈希</strong> 处理登录注册</li><li><strong>CSS Variables</strong> 实现亮&#x2F;暗主题切换</li></ul><h2 id="项目信息"><a href="#项目信息" class="headerlink" title="项目信息"></a>项目信息</h2><ul><li>项目仓库：<a href="https://github.com/Yauanyyy/Encryption-Algorithm-Demonstration-System">github.com&#x2F;Yauanyyy&#x2F;Encryption-Algorithm-Demonstration-System</a></li><li>在线演示：<a href="https://yauanyyy.github.io/Encryption-Algorithm-Demonstration-System/">yauanyyy.github.io&#x2F;Encryption-Algorithm-Demonstration-System</a></li></ul>]]>
    </content>
    <id>http://www.yanyyy.cloud/posts/2025/12/28/%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%E6%BC%94%E7%A4%BA%E7%B3%BB%E7%BB%9F%EF%BC%9A%E4%BB%8E%E5%87%AF%E6%92%92%E5%AF%86%E7%A0%81%E5%88%B0%E8%A7%86%E8%A7%89%E5%AF%86%E7%A0%81/</id>
    <link href="http://www.yanyyy.cloud/posts/2025/12/28/%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%E6%BC%94%E7%A4%BA%E7%B3%BB%E7%BB%9F%EF%BC%9A%E4%BB%8E%E5%87%AF%E6%92%92%E5%AF%86%E7%A0%81%E5%88%B0%E8%A7%86%E8%A7%89%E5%AF%86%E7%A0%81/"/>
    <published>2025-12-28T12:00:00.000Z</published>
    <summary>纯前端实现的加密算法可视化教学系统，覆盖从古典替换密码到现代AES、RSA和视觉密码的10种算法。</summary>
    <title>加密算法演示系统：从凯撒密码到视觉密码</title>
    <updated>2026-06-12T08:40:50.691Z</updated>
  </entry>
</feed>
