0

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

4

1 回答 1

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

获得常规密文后,像往常一样破解它。

于 2012-12-01T12:04:28.310 回答