Add files via upload
This commit is contained in:
@@ -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. **按“之”字形读取**:最后,按照原来的“之”字形路径,依次读取每个位置上的字母,就能还原出原始明文
|
||||
Reference in New Issue
Block a user