介绍

这题与Digraphs基本相同

由题意可知,这里的加密方法是将一个字符加密为0-255中随机一个16进制数。

所以首先编程提取出组成句子的由组成的16进制数基本单元,并将其随机替换成一个字符组成的单元(即对任意一个基本单元都替换成唯一对应的一个字符,不同基本单元对应字符不同),此时题目变为了单表替换(但其中有大小写和标点)

观察字符串,我们看到句子结尾和第一个单词结尾相同,意味着由30个密文字符(15个明文字符)组成的单词可单独成句,可以想到“congratulations“,然后剩余字符按照正确英语单词和语法进行填充。即可获得句子Congratulations! This one was harder, but you got it! very well done fellow hacker! The problem with this cipher is that the key is pretty long! I will come up with a better encryption sheme any soon! your solution is: ........

代码

Digraphs中猜测密文的过程很详细了,下面发一下我的最终代码,没有中间猜测过程。

s="74 9E 53 0C C8 7B 4E 95 8F 7B 4E CD 9E 53 5B AF 45 48 66 CD 5B 45 9E 53 01 45 F3 7B 5B 45 66 7B C8 82 01 C8 F5 45 91 95 4E 45 F7 9E 95 45 0C 9E 4E 45 CD 4E AF 45 A7 01 C8 F7 45 F3 01 8F 8F 45 82 9E 53 01 45 AE 01 8F 8F 9E F3 45 66 7B DE 6B 01 C8 AF 45 48 66 01 45 1C C8 9E 91 8F 01 5C 45 F3 CD 4E 66 45 4E 66 CD 5B 45 DE CD 1C 66 01 C8 45 CD 5B 45 4E 66 7B 4E 45 4E 66 01 45 6B 01 F7 45 CD 5B 45 1C C8 01 4E 4E F7 45 8F 9E 53 0C AF 45 DB 45 F3 CD 8F 8F 45 DE 9E 5C 01 45 95 1C 45 F3 CD 4E 66 45 7B 45 91 01 4E 4E 01 C8 45 01 53 DE C8 F7 1C 4E CD 9E 53 45 5B 66 01 5C 01 45 7B 53 F7 45 5B 9E 9E 53 AF 45 85 9E 95 C8 45 5B 9E 8F 95 4E CD 9E 53 45 CD 5B 81 45 91 1C CD AE 9E DE 0C DE 7B 82 01 CD AF"

dict1 = {'74':'C', '9E':'o', '53':'n', '0C':'g', 'C8':'r', '7B':'a', '4E':'t', '95':'u', '8F':'l', 'CD':'i', '5B':'s', '48':'T', '66':'h', '82':'d', 'DB':'I', '01':'e', 'F5':',', '45':' ', '81':':', 'AF':'!', 'F3':'w', '91':'b', 'F7':'y', 'A7':'v', 'AE':'f', 'DE':'c', '6B':'k', '1C':'p', '5C':'m', '85':'y'}
lists=s.split(" ")
str1=""
for i in lists:
    str1+=dict1[i]

print (str1)

结果

注意:每次刷新密文不同,所以我们的答案也不一样。