import{_ as m,c as l,b as a,e as p,a as t,d as e,r as i,o as r}from"./app-Dqab9jXZ.js";const c={};function o(h,s){const n=i("Mermaid");return r(),l("div",null,[s[0]||(s[0]=a("p",null,[e("置换密码的核心思想不是“把字母换成别的字母”(替换),而是"),a("strong",null,"重新排列明文字符的位置"),e("。也就是说:")],-1)),s[1]||(s[1]=a("ul",null,[a("li",null,"明文字母的集合不变,顺序发生了改变;"),a("li",null,"由于字母频率不变,置换密码依然会暴露统计特征,但单词的结构与位置模式被打散。")],-1)),s[2]||(s[2]=a("p",null,"与“替换密码”相比,置换密码更像是“洗牌”:把原本顺序排列的牌重新打乱。单独使用时并不安全,但与替换联合使用(乘积密码)能显著增强安全性。",-1)),p(n,{code:"eJxLy8kvT85ILCpR8AniUlAIiH42o+/ZtPZYBV1dOwXH6mcLdj7rXfd0fdvLSUufT5n/rGPCk729z/euqwWqdQSrcYp+2d77bNqGZ32TnnZMf7p2+vM1y2KBsk5gWedooF6QeVwAXu4ypQ=="}),s[3]||(s[3]=t(`

一、栅栏密码(Rail Fence Cipher)

工作原理: 将明文按“Z字形”写入若干行(称为“栅栏/轨道”),再按行依次读出即得到密文。轨道数即为密钥。

示意(以 3 轨为例):

轨1: 0       4       8      ...
轨2: 1    3  5    7  9      ...
轨3:   2       6              ...

示例: 明文:HELLOWORLD 轨道数:3

密文为各轨串联:HOL + ELWRD + LOHOLELWRDLO

数学表示: 设明文 P=p0p1pn1P = p_0 p_1 \\dots p_{n-1},根据密钥生成一个位置序列 s0,s1,,sn1s_0, s_1, \\dots, s_{n-1}(即置换次序),则:

Cj=psj,j=0,1,,n1C_j = p_{s_j}, \\quad j = 0,1,\\dots,n-1

解密使用逆序列 t=s1t = s^{-1}

pi=Cti,i=0,1,,n1p_i = C_{t_i}, \\quad i = 0,1,\\dots,n-1

特点

二、列移位置换(Columnar Transposition)

工作原理: 选择一个关键词,将明文按列填入表格,再按关键词的字母排序对列进行重排,最终按列或按行读出密文。

`,15)),p(n,{code:"eJxLy8kvT85ILCpR8AniUlBwjH42o+/ZtPanC1c/bV36YuGKZwv2xCro6topOFU/6+l82rr55ZR1L9b3Puub9HRX/9OO6bVATU5gBc7RL9tB4i/W737aPy0WKO4MFneJfrq+DWhkLBcAZzk0hQ=="}),s[4]||(s[4]=t('

简例(概念演示): 明文:ATTACKATDAWN 关键词:ZEBRA(按字母表排序为 A B E R Z

  1. 将明文逐行填入 5 列表格;
  2. 按关键词排序(A→B→E→R→Z)重排列;
  3. 按重排后的列依次读出密文。

(实际实现时需要处理明文长度不足一整行的填充策略,如使用 X 或留空。)

数学表示(一般置换模型): 关键词决定一个列置换 π\\pi,其作用是重新排列列索引。若把明文按列读取为序列 PP,加密可抽象为:

C=Permuteπ(P),P=Permuteπ1(C)C = \\operatorname{Permute}_{\\pi}(P), \\quad P = \\operatorname{Permute}_{\\pi^{-1}}(C)

特点

三、联合与加固:置换 × 替换

将“替换”与“置换”组合(先替换后置换,或多轮交替)能显著增强安全性:

这种思路在现代密码设计中仍然常见(“混淆与扩散”理念),尽管算法形式已经大为不同。

四、安全性与弱点(直观理解)

五、小练习(可选)

试着把你自己的名字用 3 轨栅栏加密;然后写出解密过程(先确定轨道索引,再按逆序重建原文)。

附件:

具体的使用样例代码请参考:https://gitea.simengweb.com/si-meng-spec/cryptography-example-code

',17))])}const d=m(c,[["render",o]]),u=JSON.parse('{"path":"/theory/cryptography/permutation-encryption/","title":"置换密码 - 等待完善","lang":"zh-CN","frontmatter":{"title":"置换密码 - 等待完善","createTime":"2025/10/29 13:50:49","permalink":"/theory/cryptography/permutation-encryption/","description":"置换密码的核心思想不是“把字母换成别的字母”(替换),而是重新排列明文字符的位置。也就是说: 明文字母的集合不变,顺序发生了改变; 由于字母频率不变,置换密码依然会暴露统计特征,但单词的结构与位置模式被打散。 与“替换密码”相比,置换密码更像是“洗牌”:把原本顺序排列的牌重新打乱。单独使用时并不安全,但与替换联合使用(乘积密码)能显著增强安全性。 一、...","head":[["script",{"type":"application/ld+json"},"{\\"@context\\":\\"https://schema.org\\",\\"@type\\":\\"Article\\",\\"headline\\":\\"置换密码 - 等待完善\\",\\"image\\":[\\"\\"],\\"dateModified\\":\\"2025-10-29T14:12:12.000Z\\",\\"author\\":[]}"],["meta",{"property":"og:url","content":"https://notes.simengweb.com/theory/cryptography/permutation-encryption/"}],["meta",{"property":"og:site_name","content":"仲夏夜之梦"}],["meta",{"property":"og:title","content":"置换密码 - 等待完善"}],["meta",{"property":"og:description","content":"置换密码的核心思想不是“把字母换成别的字母”(替换),而是重新排列明文字符的位置。也就是说: 明文字母的集合不变,顺序发生了改变; 由于字母频率不变,置换密码依然会暴露统计特征,但单词的结构与位置模式被打散。 与“替换密码”相比,置换密码更像是“洗牌”:把原本顺序排列的牌重新打乱。单独使用时并不安全,但与替换联合使用(乘积密码)能显著增强安全性。 一、..."}],["meta",{"property":"og:type","content":"article"}],["meta",{"property":"og:locale","content":"zh-CN"}],["meta",{"property":"og:updated_time","content":"2025-10-29T14:12:12.000Z"}],["meta",{"property":"article:modified_time","content":"2025-10-29T14:12:12.000Z"}]]},"readingTime":{"minutes":3.41,"words":1022},"git":{"createdTime":1761747132000,"updatedTime":1761747132000,"contributors":[{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"}]},"autoDesc":true,"filePathRelative":"notes/theory/cryptography/classical-encryption/permutation-encryption.md","headers":[]}');export{d as comp,u as data};