揭秘波雷费密码的真相:它到底有那么神奇吗?

天美租号

大家今天瞎鼓捣了一个叫“波雷费密码”的玩意儿,感觉还挺有意思的,就把整个过程给大家捋一捋,分享一下我是怎么一步步把它弄明白的。

第一步:琢磨那个字母矩阵

一开始看这密码,最核心的就是那个5x5的字母方阵。说是要先整个密钥,比如我当时随便想了个词儿“MYSECRETWXYZ”。

揭秘波雷费密码的真相:它到底有那么神奇吗?

然后就得处理这个密钥:

  • 先把密钥里重复的字母给去了。我那个“MYSECRETWXYZ”,里面没重复的,运气还行。
  • 然后,这密码有个规矩,就是26个字母得塞进25个格子里,所以一般就把'I'和'J'当成一个字母处理,或者干脆就不用'J',用'I'代替。我当时是选了把'J'给扔了,看到'J'就当'I'使。

弄好密钥之后,就开始往一个5x5的格子里填字母。先把处理好的密钥字母按顺序填进去。我那个“MYSECRETWXYZ”填完后,剩下的格子就按字母表顺序,把没用过的字母挨个填进去,还是跳过'J'。

揭秘波雷费密码的真相:它到底有那么神奇吗?

填完之后,就得到一个独一无二的密码表了。比如,大概长这样(我随便画一个示意一下):

M Y S E C

R T W X Z

A B D F G

H I K L N

O P Q U V

揭秘波雷费密码的真相:它到底有那么神奇吗?

这一步花了我点时间,主要是确保字母不重不漏,还得记得'I'/'J'那个茬儿。

第二步:准备要加密的文字

有了字母矩阵,接下来就是准备要加密的明文了。也不是拿过来就能直接用的,也得捣鼓几下:

  • 先把所有字母都变成大写,这样方便统一处理。
  • 把所有非字母的玩意儿,比如空格、标点符号,都给删了。
  • 揭秘波雷费密码的真相:它到底有那么神奇吗?

  • 还是那个'I'/'J'的问题,如果明文里有'J',我也把它换成'I'。
  • 然后,把明文两个两个一对儿地分开。比如“HELLO WORLD”,处理完就变成“HE LL OW OR LD”。
  • 重点来了:如果一对儿里的两个字母是一样的,比如上面那个“LL”,就得在第一个字母后面插个不常用的字母,比如'X'。那“LL”就变成“LX L”。所以“HELLO WORLD”就成了“HE LX LO WO RL D”。
  • 如果分完组,发现剩了一个单个的字母,比如上面那个“D”,也得给它配个伴,通常也是加个'X'。所以就成了“HE LX LO WO RL DX”。

这一步真是挺琐碎的,特别是那个插'X'的规则,一开始老忘,加密出来结果就不对。

揭秘波雷费密码的真相:它到底有那么神奇吗?

第三步:开始加密!

准备工作都做完了,就可以对照着那个5x5的字母矩阵,一对一对地加密了。加密规则有这么几种:

  • 情况一:俩字母在同一行。 这时候,就把每个字母都换成它右边那个字母。要是到行末了,就绕回到行首那个。
  • 情况二:俩字母在同一列。 这时候,就把每个字母都换成它下边那个字母。要是到列末了,就绕回到列首那个。
  • 情况三:俩字母既不在同一行,也不在同一列。 这时候,这俩字母和矩阵里的另外俩字母能组成一个长方形。加密的时候,第一个字母换成跟它同一行,但在长方形另一个角的那个字母;第二个字母也一样,换成跟它同一行,但在长方形另一个角的那个。说起来有点绕,就是在那个长方形里,水平换一下对角。
  • 揭秘波雷费密码的真相:它到底有那么神奇吗?

我就拿着上面处理好的“HE LX LO WO RL DX”,一对一对地按这个规则找字母、换字母。这个过程得特别细心,一开始眼神不老是找错行或者列,出来的密文就乱七八糟。

第四步:解密过程

加密搞定了,解密就是把加密的步骤反过来:

  • 原来是往右找字母的(同一行),现在就往左找。
  • 揭秘波雷费密码的真相:它到底有那么神奇吗?

  • 原来是往下找字母的(同一列),现在就往上找。
  • 那个长方形规则比较加密解密都一样,还是水平换对角。

把加密后的密文,再用同样的字母矩阵,按解密的规则一对一对处理回去。顺利的话,就能得到加密前插入过'X'的明文了。再把那些为了凑对儿或者分开重复字母而加进去的'X'给去掉,还有把'I'可能要还原成'J'(如果原始文本有'J'的话,不过我当时是统一按'I'处理了),明文就回来了。

实践感受:

整个弄下来,感觉这个波雷费密码虽然老,但里面的逻辑还挺巧妙的。特别是那个处理重复字母和凑对的规则,一开始觉得麻烦,但不多这么几下,确实不行。自己动手把密钥矩阵生成、明文预处理、加密解密规则都跑一遍之后,才算真正理解了它是怎么回事。

一开始用纸笔推了几遍,后来用代码实现了一下,调试的时候才发现各种小细节特别容易出错,比如字母表里'I'/'J'的处理,边界条件(换行换列)等等。不过当看到加密后的乱码能准确无误地解密回原文时,那种感觉还是挺爽的!

行了,今天就先分享到这儿。大家有兴趣也可以自己动手试试,还挺锻炼逻辑思维的。

发表评论

快捷回复: 表情:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog
验证码
评论列表 (暂无评论,7人围观)

还没有评论,来说两句吧...