### 栅栏密码的原理是什么

**加密原理**

栅栏密码的原理是，将明文的字母像写在交错的栅栏上一样，然后按行读取

1. **选择密钥**：首先，你需要选择一个密钥，这个密钥就是一个整数，表示“栅栏”的层数。例如，密钥为 3，就表示有 3 层栅栏
2. **构造栅栏**：将明文的字母按照“之”字形（zig-zag）的路径，依次填写到对应层数的栅栏上
3. **按行读取**：加密后的密文就是将每一层栅栏上的字母，从上到下、从左到右依次连接起来

**示例：**

- **明文**：`WE ARE DISCOVERED. FLEE AT ONCE.`
- **密钥**：`3`

我们将明文写在 3 层栅栏上：

现在，我们按行读取，忽略点号，只提取字母：

- **第一行**：`WEDOEE`
- **第二行**：`ERDSOEFETNC`
- **第三行**：`AICSVRAOC`

将三行连接起来，就得到了密文：

**密文**：`WEDOEE ERDSOEFETNC AICSVRAOC`

**解密原理**

解密过程是加密的逆向操作，你需要知道密钥和密文的长度

1. **计算每行长度**：根据密钥和密文长度，计算出每一层栅栏上的字母数量
2. **重构栅栏**：根据计算出的数量，将密文依次填回到“之”字形的栅栏结构中
3. **按“之”字形读取**：最后，按照原来的“之”字形路径，依次读取每个位置上的字母，就能还原出原始明文