介绍:
所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话。 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)
加密原理:
①把将要传递的信息中的字母交替排成上下两行。
②再将下面一行字母排在上面一行的后边,从而形成一段密码。
③例如:
明文:THE LONGEST DAY MUST HAVE AN END
加密:
1、把将要传递的信息中的字母交替排成上下两行。
T E O G S D Y U T A E N N
H L N E T A M S H V A E D
2、 密文:
将下面一行字母排在上面一行的后边。
TEOGSDYUTAENN HLNETAMSHVAED
解密:
先将密文分为两行
T E O G S D Y U T A E N N
H L N E T A M S H V A E D
再按上下上下的顺序组合成一句话
明文:THE LONGEST DAY MUST HAVE AN END
用Python实现加密:
def fun_enCrypto(string_C , Ek):
string_M = '' #初始化密文
n = 0 #提取第n列字符
while n < Ek:
m = 0 #第m分组
while m < len(string_C) / Ek: #明文长度/加密密钥 即得分组个数
if (m * Ek+ n) < len(string_C):
string_M = string_M + string_C[int(m * Ek+ n)]
m += 1
else :
break
n += 1
return string_M
用Python实现解密:
n = 0
while n < Dk:
m = 0
while m < Ek:
if (m * Dk + n) < len(string_M):
string_C = string_C + string_M[int(m * Dk + n)]
m += 1
else:
break
n += 1
return string_C