Add files via upload

This commit is contained in:
雾島风起時
2025-09-25 04:06:06 +08:00
committed by GitHub
parent 1828e70c1d
commit 1447d9a5fa
6 changed files with 205 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
### 栅栏密码的原理是什么
**加密原理**
栅栏密码的原理是,将明文的字母像写在交错的栅栏上一样,然后按行读取
1. **选择密钥**:首先,你需要选择一个密钥,这个密钥就是一个整数,表示“栅栏”的层数。例如,密钥为 3,就表示有 3 层栅栏
2. **构造栅栏**:将明文的字母按照“之”字形(zig-zag)的路径,依次填写到对应层数的栅栏上
3. **按行读取**:加密后的密文就是将每一层栅栏上的字母,从上到下、从左到右依次连接起来
**示例:**
- **明文**`WE ARE DISCOVERED. FLEE AT ONCE.`
- **密钥**`3`
我们将明文写在 3 层栅栏上:
现在,我们按行读取,忽略点号,只提取字母:
- **第一行**`WEDOEE`
- **第二行**`ERDSOEFETNC`
- **第三行**`AICSVRAOC`
将三行连接起来,就得到了密文:
**密文**`WEDOEE ERDSOEFETNC AICSVRAOC`
**解密原理**
解密过程是加密的逆向操作,你需要知道密钥和密文的长度
1. **计算每行长度**:根据密钥和密文长度,计算出每一层栅栏上的字母数量
2. **重构栅栏**:根据计算出的数量,将密文依次填回到“之”字形的栅栏结构中
3. **按“之”字形读取**:最后,按照原来的“之”字形路径,依次读取每个位置上的字母,就能还原出原始明文