信息安全概论作业四

题干

密文:xlxohzhpytkmxbqionlyiyrclkjgff

提示:

小红小明网聊忙,学过概论用得上,协商素数得双幺,最小原根心所向。

小红随机选个七,小明传来多个一,维吉尼亚很安全,各位破解细思量。

 

结果

密钥:bdfhjlnprtvxz

明文:wishyouahappyandhealthyholiday

 

 

思路

1. DH密钥交换

首先观察提示。注意到第二句“协商素数得双幺,最小原根心所向。”

其中“幺”代表数字1(读音也一样),素数“双幺”最容易想到的是11.网上搜查得11的最小原根为2.

 

出现了素数和原根,加之小红小明进行了一个传递操作,不难联想到这是一个DH密钥交换。(算法的具体内容可以参见书本P34)在这里,算法中的素数p=11,整数g=2。根据第三句提示,小红选择随机数x=7,小明传回Y'=7+1=8,可以计算出交换算法的密钥K=2.(手算的话会用到一些模运算的基本性质)

 

【事实上小红选择7可以有两种理解,一种是x=7,另一种是Y=7。但有意思的是2^7(mod 11)正好等于7,也就是x=7与Y=7是同时成立的,避免了歧义】

 

2. 维吉尼亚密码

之前我到这里就卡住了(甚至连K都不会算),因为维吉尼亚密码的密钥只能由字母构成,而我始终无法把得到的数字密钥与字母关联起来。

 

于是我开始自己尝试。在乱输一番后我发现,如果某一位明文的密钥是'a',它对应的密文还是它本身;如果是'b',它对应的密文恰为明文移一位得到的字母;如果是'c',则变为移动两位……说白了维吉尼亚的加密就是把明文移位,移动的位数等于密钥字母在字母表中的索引。但发现这个规律对我得出答案并没有什么实质性的帮助。

 

直到大佬用程序给出了原题目的答案(参见https://www.cnblogs.com/cbgeng/p/16204250.html),我才意识到密文有26位,而且从密钥来看是字母表的顺序排列,没有'a'可能是它对应位移为0。在这个正确结果的基础上,我尝试把得到的K值结合到维吉尼亚里。

 

首先想到的是从下标K开始,即跳过b,变为cdefghijklmnopqrstuvwxyz。试了下发现结果不正确。

 

 

失败后我改为把K作为步长,仍然从b开始,但不再是连续的字母。考虑到之前的密钥包含了b到z,所以我试了试bdfhjlnprtvxzcegikmoqsuwy,发现只有前一半结果是正常的。

 

 

尝试把'z'之后的字母去掉,得到了一个(差不多)完整的句子。

 

 

虽然得到了一个可能是正确结果的明文,但我对一些细节其实并没有完全理解,比如密钥为什么是字母顺序排列,K为什么是步长,等等。嗯希望能对大家有所帮助吧。

 

posted @ 2022-04-28 22:43  zzzz罗  阅读(183)  评论(0编辑  收藏  举报