轨道
/
Python
Python
/
练习
/
栅栏密码
栅栏密码

栅栏密码

中等

说明

实现栅栏密码的编码和解码。

栅栏密码是一种换位密码,名字来自它的编码方式。古希腊人就已经使用过它。

在栅栏密码中,消息沿着想象中栅栏的一条条“栏”向下写,到达底部后再向上移动(就像之字形)。最后,再按行读出消息。

例如,使用 3 条“栏”加密消息“WE ARE DISCOVERED FLEE AT ONCE”,加密者会写出:

W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . A . . . I . . . V . . . D . . . E . . . N . .

然后读出:

WECRLTEERDSOEEFEAOCAIVDEN

要解密一条消息,先画出之字形,再沿着各行填入密文。

? . . . ? . . . ? . . . ? . . . ? . . . ? . . . ?
. ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? .
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .

第一行有 7 个空位,可以填入“WECRLTE”。

W . . . E . . . C . . . R . . . L . . . T . . . E
. ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? .
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .

接下来第二行填入“ERDSOEEFEAOC”。

W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .

把“AIVDEN”留给最后一行。

W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . A . . . I . . . V . . . D . . . E . . . N . .

现在沿着之字形读下去,就能读出原始消息。


来源

Wikipedia链接会在新窗口或新标签页中打开
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Python Exercism

准备好开始 栅栏密码 了吗?

注册 Exercism,借助 17 个概念146 个练习 和真人导师指导,学习并掌握 Python,全部免费。