简介
所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)
实现
一般比较常见的是2栏的栅栏密码。
比如明文:THEREISACIPHER
两个一组,得到:TH ER EI SA CI PH ER
先取出第一个字母:TEESCPE
再取出第二个字母:HRIAIHR
连在一起得到密文:TEESCPEHRIAIHR
而解密的时候,我们先把密文从中间分开,变为两行:
T E E S C P E
H R I A I H R
再按上下上下的顺序组合起来:
得到明文:THEREISACIPHER
代码
函数(字符串,间隔)
def enFence(string, space):
s = ""
for i in range(0, space):
for j in range(i, len(string), space):
# 不能越界
if j < len(string):
s += string[j]
print(s)
def deFence(string, space):
s = ""
if len(string) % space == 0:
key = len(string) // space
else:
key = len(string) // space + 1
# 小于间隔继续
for i in range(0, key):
for j in range(i, len(string), key):
# 不能越界
if j < len(string):
s += string[j]
print(s)
主函数
import Fence
if __name__ == "__main__":
Fence.enFence("123456789", 3)
Fence.deFence("147258369", 3)
总结
这个也不是很常见,了解即可。