如题:2018年10月
答:还是看清楚题意,此题是问的是明文。绝不要想当然,至少读两遍题,一定要确定题的意思。
第一问:密文是frgh,恺撒密码是由明文往后推三位,所以知道密文,往前推三位就是明文。f作为第0位。往前推三位是c.
依次.答案是code.
第二问:置换密码??根据一定的规则重新排列明文。不改变明文内容,只改变明文结构。
而列置换密码?操作及输出都是以列为单位。将明文以密钥长度为列数形成矩阵,按照密钥的顺序进行列置换。
这个定义不难理解:要点是:1、明文按密钥长度填充一个矩阵 2、按密钥顺序置换,这个置换不同的书或介绍是不同的,所以尽信书则不如无书,尤其是现在书中的例子,其实是没有说明置换规则的,所以不需要死扣,只要明白原理即可。
书中的例子就是最简单的规则,按密钥顺序选列输出(也就是说输出顺序由密钥顺序编号决定)。密钥顺序是4312,即第一次输出矩阵第3列,第二次输出矩阵第四列,第三次输出矩阵第2列。
对应到此题:code密钥,对应的置换规则为(1423)要是类比到教材中的例子,那么第一次输出矩阵第一列,第二次输出矩阵第3列才对。但从答案上看是直接把置换规则作为顺序来输出的。即第一次输出第一列,第二次输出矩阵第四列。这符自己最初的理解。也就是规则里的序号对应的就是矩阵的列号。
而书中的例子是规则里的序号输出的顺序号。
另外也查了下其他资料,这个置换规则就是人为来制定的,不同的书就是有不同的解释。以上的两种都是比较简单的交换,还真谈不上置换。以下是找的真正的列置换的方式:还是比较麻烦的。解密是要求逆置的。
从这里也可以看出,本科阶段,其实也是属于基础教育阶段,谈不上专业。只是为专业打个基础。重要的是思想。
另外题目是已知密文求明文,很明显是逆过程,如何来逆呢?
不论是由明到密还是由密到明,矩阵都是没有变化的,所以问题的关键就是填充矩阵.由于密钥长度为4,所以矩阵是按4列排列。
每列的字母数就是24/6(24就是密文的长度)。
根据置换规则,第一列对应第一列,所以前6个字母就是第一列
1 c u e r i p第2次输出的其实对应矩阵的第四列,将次6个字母填入表格,这里就要注意了,明文是按照
1 2c pu ne or ri ip $第3次输出的对应矩阵的第2列
13 2co put net ork rin ipl $
第四次输出对应矩阵的第2列,也就是将剩余字填入
1次输出 34次输出2computrnetworkprinciple$得到这个表,其实就可以知道明文了,因为明文是按照密钥长度填充
最后得到 computr network prnciple.