我正在研究一种算法来破解修改后的 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 重写方程?如果有人能指出这一点,那将有很大帮助。