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

加密原理

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

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

示例：

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

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

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

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

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

密文：`WEDOEE ERDSOEFETNC AICSVRAOC`

解密原理

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

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