列置换密码和恺撒密码解题
例题一
本题来自:2018 年 10 月高等教育自学考试全国统一命题考试 计算机网络原理 试卷 (课程代码 04741)
设 Bob 给 Alice 发送了 frgh 和 cuerippnori$ottknlmrwpce 两段密文。其中第一段密文为密钥 k=3(字符集为 26 个小写英文字母)的恺撒密码,第二段密文是
采用了第一段密文的明文作为加密密钥的列置换密码(填充字符为$)。试求:
(1) 第一段密文的明文:
(2) 第二段密文的明文(写出解密过程)
解析
(1)题中frgh是恺撒密码,k=3。我们可以列出A-Z所有的字母,然后向前偏移3个字母,就能得到明文。
a b c d e f g h i j k l m n o p q r s t u v w x y z
f向前偏移三个字母是c
r向前偏移三个字母是o
g向前偏移三个字母是d
h向前偏移三个字母是e
那么第一段的密文的明文就是:code。
(2)第二段密文是采用了第一段密文的明文作为加密密钥的列置换密码,第一段的明文是code,字母出现的先后顺序是1 4 2 3 。
由于密钥是4个字符,密文是24个字符,$24/4=6$,我们可以将密文,按照每6个进行分组,分为四组,分别为:
cuerip | pnori$ | ottknl | mrwpce
然后我们构建一个4列6行的矩阵,接下来,我们要将密文分组,按照密钥字母出现的顺序从上到下放到矩阵中,
1 | 2 | 3 | 4 |
---|---|---|---|
c | o | m | p |
u | t | r | n |
e | t | w | o |
r | k | p | r |
i | n | c | i |
p | l | e | $ |
放入到矩阵中后,我们按照从左到右,逐行记录下来:comp utrn etwo rkpr inci ple$
然后我们把填充字符$去掉,得:comp utrn etwo rkpr inci ple
然后根据英文单词的意思整理:computr network principle 我们可以发现这样就感觉意思通顺了,但是computr 明显少了一个e,我们把e加上去,明文就是:
computer network principle
这道题的参考答案是computer network principle,但是自己推导出来是少一个e的,我也是觉得需要加一个e才能满足单词完整,要么题有问题要么答案有问题。
例题二
如果对明文“bob. i love you. Alice”,利用k=3的恺撒密码加密,得到的密文是什么?利用密钥“nice”进行列置换加密后得到的密文是什么?
解析
第一问
利用恺撒密码加密,k=3,那么明文中所有字母都要往后移动三位。
a b c d e f g h i j k l m n o p q r s t u v w x y z
b移动三位是e
o移动三位是r
i移动三位是l
以此类推,结果是:ere l oryh brx dolfh
第二问
"nice"的字母顺序是4 3 1 2
明文的字符的长度是16,我们构建一个$4\times4$的表格依次将明文填入表格中。
1 | 2 | 3 | 4 |
---|---|---|---|
b | o | b | i |
l | o | v | e |
y | o | u | a |
l | i | c | e |
我们按照4 3 1 2 的顺序把字母获取出来:ieae bvuc blyl oooi
加密后的密文就是:ieae bvuc blyl oooi
总结
- 恺撒密码,根据k来顺推
- 列置换密码,首先根据密钥中字母出现的顺序,确定下一步要取出那一列的数据,第二步就是将明文依次放到表格中,然后按照第一步中的顺序,依次取出列的数据。