diff --git a/docs/.vuepress/notes.ts b/docs/.vuepress/notes.ts index 6577441..7d46f4b 100644 --- a/docs/.vuepress/notes.ts +++ b/docs/.vuepress/notes.ts @@ -104,7 +104,8 @@ const cryptography = defineNoteConfig({ { text: "密码学基础", link: "/theory/cryptography/" }, { text: "古典加密算法", prefix: "/theory", items: [ - { text: "替换密码", link: "/theory/cryptography/substitution-ciphers/" } + { text: "替换密码", link: "/theory/cryptography/substitution-ciphers/" }, + { text: "置换密码", link: "/theory/cryptography/permutation-encryption/" }, ] }, ] diff --git a/docs/blog/technology/Xinchuang_Competition.md b/docs/blog/technology/Xinchuang_Competition.md new file mode 100644 index 0000000..4fecc41 --- /dev/null +++ b/docs/blog/technology/Xinchuang_Competition.md @@ -0,0 +1,75 @@ +--- +title: Linux 系统适配环境搭建 +createTime: 2025/10/29 15:39:35 +permalink: /article/xinchuang-competition-2025/ +password: simeng +--- + +## 赛题要求 +- yum 仓库地址:http://192.168.122.1:58000/content +- 软件包下载地址:http://192.168.122.1:58000/software + +系统信息列表 + +| 序号 | 标签名称 | 操作系统 | 账号信息 | +|----|---------|----------|----------| +| 1 | Server1 | openEuler 22.03(已安装) | root / openEuler12#$ | +| 2 | Server2 | openEuler 22.03(已安装) | root / openEuler12#$ | +| 3 | Server3 | openEuler 22.03(待安装) | N/A | +| 4 | Desktop | Kylin v10(已安装) | admin / admin@0000 | + +## 第一部分 【适配环境搭建】 + +### 基础配置 yum 源 +这里题目中没有提到,但是需要进行一下配置 + + + +### 系统安装与配置 +为 Server3 安装 openEuler 操作系统 + +配置系统语言:English + +配置系统时区:Asia/Shanghai + +配置安装类型:Server + +系统启动分区保持不变,其他分区要求如下: + +位置 容量 文件系统 + +| 挂载点 | 容量 | 文件系统 | +|--------|------|----------| +| / | 剩余所有容量 | ext4 | +| swap | 4G | swap | +| /opt | 40G | xfs | + +其他未提及的配置内容保持系统默认设置。 + +确认并且配置服务器地址及名称: + +| 服务器 | FQDN | IP | +|---------|-----------------------|------------------| +| Server1 | app1.system.org.cn | 172.16.50.101/24 | +| Server2 | app2.system.org.cn | 172.16.50.102/24 | +| Server3 | sts.system.org.cn | 172.16.50.103/24 | +| Desktop | - | 172.16.50.111/24 | + +```bash title='配置服务器地址以及名称' +hostnamectl +``` + +确认并且配置系统网关为 172.16.50.1,确保服务器能与网关通信。 + +为所有 Server 主机启用防火墙,防火墙区域为 public ,根据不同服务在防火墙中使用添加端口的方式添加策略。 + +确认并且保持 root 用户密码为:admin@0000,确保该账户能够通过 SSH 远程登录 + +为所有 Server 主机生成 2 组(RSA 算法和国密算法)SSH 公私钥对,其中 RSA 密钥长度为 4096。配置实现 Server 主机之间的 SSH 免密登录。 + +所有主机间的访问均通过 FQDN 的形式进行访问。 + +使用 chrony 进行时间同步。Server1 与 172.16.50.1 进行时间同步,同时为其他服务器提供时间服务。 +## 第一部分 +## 第一部分 +## 第一部分 \ No newline at end of file diff --git a/docs/notes/theory/cryptography/classical-encryption/permutation-encryption.md b/docs/notes/theory/cryptography/classical-encryption/permutation-encryption.md new file mode 100644 index 0000000..90bb4d8 --- /dev/null +++ b/docs/notes/theory/cryptography/classical-encryption/permutation-encryption.md @@ -0,0 +1,107 @@ +--- +title: 置换密码 - 等待完善 +createTime: 2025/10/29 13:50:49 +permalink: /theory/cryptography/permutation-encryption/ +--- + +# 置换密码(Permutation / Transposition Ciphers) + +置换密码的核心思想不是“把字母换成别的字母”(替换),而是**重新排列明文字符的位置**。也就是说: +- 明文字母的集合不变,顺序发生了改变; +- 由于字母频率不变,置换密码依然会暴露统计特征,但单词的结构与位置模式被打散。 + +与“替换密码”相比,置换密码更像是“洗牌”:把原本顺序排列的牌重新打乱。单独使用时并不安全,但与替换联合使用(乘积密码)能显著增强安全性。 + +```mermaid +flowchart LR + P[明文] --> A{根据密钥生成位置} + A --> B[重新排列字符] + B --> C[密文] +``` + +## 一、栅栏密码(Rail Fence Cipher) + +**工作原理**: +将明文按“Z字形”写入若干行(称为“栅栏/轨道”),再按行依次读出即得到密文。轨道数即为密钥。 + +**示意**(以 3 轨为例): +``` +轨1: 0 4 8 ... +轨2: 1 3 5 7 9 ... +轨3: 2 6 ... +``` + +**示例**: +明文:`HELLOWORLD` +轨道数:`3` +- 轨1(索引 0,4,8):`H O L` +- 轨2(索引 1,3,5,7,9):`E L W R D` +- 轨3(索引 2,6):`L O` + +密文为各轨串联:`HOL` + `ELWRD` + `LO` → `HOLELWRDLO` + +**数学表示**: +设明文 $P = p_0 p_1 \dots p_{n-1}$,根据密钥生成一个位置序列 $s_0, s_1, \dots, s_{n-1}$(即置换次序),则: +$$ +C_j = p_{s_j}, \quad j = 0,1,\dots,n-1 +$$ +解密使用逆序列 $t = s^{-1}$: +$$ +p_i = C_{t_i}, \quad i = 0,1,\dots,n-1 +$$ + +**特点**: +- 实现简单,直观“打乱顺序” +- 频率不变,难以抵抗纯统计分析;但位置模式被破坏,较难直接猜词 +- 作为教学与与替换密码的组合(乘积密码)更有价值 + +## 二、列移位置换(Columnar Transposition) + +**工作原理**: +选择一个关键词,将明文按列填入表格,再按关键词的字母排序对列进行重排,最终按列或按行读出密文。 + +```mermaid +flowchart LR + A[明文填入表格] --> B{按关键词排序列} + B --> C[重排读取] + C --> D[密文] +``` + +**简例(概念演示)**: +明文:`ATTACKATDAWN` +关键词:`ZEBRA`(按字母表排序为 `A B E R Z`) +1) 将明文逐行填入 5 列表格; +2) 按关键词排序(A→B→E→R→Z)重排列; +3) 按重排后的列依次读出密文。 + +(实际实现时需要处理明文长度不足一整行的填充策略,如使用 `X` 或留空。) + +**数学表示(一般置换模型)**: +关键词决定一个列置换 $\pi$,其作用是重新排列列索引。若把明文按列读取为序列 $P$,加密可抽象为: +$$ +C = \operatorname{Permute}_{\pi}(P), \quad P = \operatorname{Permute}_{\pi^{-1}}(C) +$$ + +**特点**: +- 比栅栏更灵活,关键词让置换更“难猜” +- 仍保留频率分布,易受已知明文/选择明文的结构分析攻击 +- 常与替换结合形成更强的乘积密码(如 ADFGX/ADFGVX 密码) + +## 三、联合与加固:置换 × 替换 + +将“替换”与“置换”组合(先替换后置换,或多轮交替)能显著增强安全性: +- 替换打乱统计特征(字母频率分布变平) +- 置换打乱位置结构(模式与相邻关系被破坏) + +这种思路在现代密码设计中仍然常见(“混淆与扩散”理念),尽管算法形式已经大为不同。 + +## 四、安全性与弱点(直观理解) +- 单独的置换密码不改变字母频率,抵抗统计攻击能力有限 +- 容易受到已知明文/选择明文攻击(通过结构猜测置换) +- 多轮、复杂置换能提高攻击成本,但不建议单独用于实际安全场景 + +## 五、小练习(可选) +试着把你自己的名字用 3 轨栅栏加密;然后写出解密过程(先确定轨道索引,再按逆序重建原文)。 + +## 附件: +具体的使用样例代码请参考:[https://gitea.simengweb.com/si-meng-spec/cryptography-example-code](https://gitea.simengweb.com/si-meng-spec/cryptography-example-code)