我正在开发一种算法来破解修改后的Vigenere Cipher。常规Vigenere密码以下列方式工作:
Plaintext: ATTACKATDAWN
Key: LEMONLEMONLE
Ciphertext: LXFOPVEFRNHR
常规版
CR[i] = (P[i] - 33 + K[i]) mod 94 + 33
修改版
CM[i] = (P[i] - 33 + K[i] + CM[i-1] - 33) mod 94 + 33
请注意修改后的版本如何使用以前的状态/字符来生成新的状态/字符。我打破它的理论是将修改后的版本反转回常规的Vigenere密码。这样我可以应用一些频率分析和其他方法。我需要以某种方式重新排列这个等式,以便我在LHS上用C“ previousC ”。因为C和previousC都是已知值,所以应该很容易进行反转(从第一个字符开始) 。
我唯一的问题是,如何根据C和previousC重写等式?如果有人能指出那会有很大帮助。
答案 0 :(得分:3)
CR
代表常规的Viginere密文,CM
修改后的Viginere密文
CR[i] = (P[i] + K[i]) mod 26
CM[i] = (P[i] + K[i] + CM[i-1]) mod 26
= (CR[i] + CM[i-1]) mod 26
现在只需解决原始密文CR
CR[i] = (CM[i] - CM[i-1]) mod 26
一旦你有了常规的密文,就像往常一样打破它。