我有这样的伪代码的键:寻找用于加密
for i = 0 ... P.length
C[i] = P[i] XOR K[i%K];
K[i%k] = (K[i%k] +P[i]) mod 64;
其中P是一个纯文本,C是加密文本,K是密钥和k表示密钥K(音符的长度K和K的帽子不同)。
请注意,这是一个家庭作业,但它不是我的,我只是很好奇如何解决它,因为我一直喜欢加密主题。
这里的任务是推导纯文本P,如果你给C和你知道以下关于密钥。
该键被选作this TWL Word List的随机词。一个介于0和999之间的随机数被附加到所选词的末尾。概率为0.5时,首字母大写。然后将小写字母'o'以每个'o'的概率0.5转换为'0'(零)。类似地,每个小写'l'(ell)被转换为'1'(一),每个'e'到'3',每个''到'5',并且每个't'到'7',全部与概率0.5。
该程序需要少于10秒钟,并消耗少于1 GB的内存。给出这个问题的班级有中档笔记本电脑,所以我会认真对待这10秒钟(尽管由于我没有真正解决功课,所以我没有时间限制)。
什么是解决此问题的好方法?因为这里看起来好像蛮力不会有任何用处。
P.S.如果“%”是模块化的划分......那么“MOD”是做什么的?
编辑:
纯文本P从维基百科采取了随机文本中不属于字母或数字的所有字符被剥离出来(包括空格),我几乎可以肯定,每个字符与匹配[a-zA-Z0-9],如果不匹配则删除。
编辑2:
This .pdf可能会有助于澄清。在那里你会找到P输出和键的例子。
我假设'mod'和'%'是指同一件事,只是教授想保持简单。 – sarnold 2011-03-30 02:03:55
mod 64很奇怪。如果我理解正确,密钥的长度肯定会是5? (该列表只有4个字母的单词,并且我们添加了一个数字)。密钥和明文是ASCII编码的,还是什么? – 2011-03-30 08:39:51
第二个想法,64表明,也许OP意味着首字母AZ的编码为0-25,az为26-61,数字加上其他2个字符作为最后2(base64样式),或者某些变体这个,也可能密码文本也是这样编码的。请澄清。 – 2011-03-30 10:42:39