步骤:将“HELLO WORLD”用3行加密
输入明文: HELLO WORLD
行数(Key): 3
H . . . O . . . R . . .
. E . L . W . L . D .
. . L . . . O . . . .
第1行:H O R
第2行:E L W L D
第3行:L O
密文: HORELWL DLO → “HORELWLDLO”
注意:空格是否保留需约定。标准做法是移除所有非字母字符,最终为“HORELWLDLO”。
步骤:解密密文“HORELWLDLO”,已知行数=3
输入密文: HORELWLDLO
行数(Key): 3
总长度=10,行数=3
每周期长度 = 2×(3−1) = 4
完整周期数 = ⌊10 ÷ 4⌋ = 2,余数=2
第1行字符数 = 2×2 + min(1,2) = 5
第2行字符数 = 2×2 = 4
第3行字符数 = 2×2 + min(1,2−1) = 3
第1行:H O R L W(5字符)
第2行:E L W L(4字符)
第3行:D L O(3字符)
H . . . O . . . R . . .
. E . L . W . L . D .
. . L . . . O . . . .
明文: HELLOWORLD → “HELLO WORLD”
解密关键:需准确计算每行字符分布,再按Z字形路径依次提取字符。
中文栅栏密码处理技巧
中文字符非字母体系,需特殊处理:
WO XI HAO NI HAO
我喜 欢你
我 欢
喜 你
密文: 我欢 喜你 → “我欢喜你”(易混淆)
推荐方案: 拼音+数字标记声调 → WO3 XI3 HAO3 NI3 → 再加密
⚠️ 注意:中文直接使用栅栏密码易导致歧义,建议:
- 使用拼音全拼(不带声调)+ 小写处理
- 添加分隔符(如“_”)增强可读性
- 结合Base64编码提升兼容性
进阶技巧:多级栅栏密码与填充混淆
单层栅栏密码易被暴力破解,进阶方法包括:
明文:SECRET
密文:SREECT
S R
E E
C T
→ 读列为:SEC RET → “SECRE T”
密文 → “SECRETX”
其他技巧:
- 使用随机填充字符(如0-9、标点)干扰频率分析
- 结合凯撒移位:先栅栏,再移位
- 用日期数字作为密钥组合(如20260115 → 行数=2+0+2+6=10)