2012-12-01 73 views
0

我正在研究一個算法打破修改後的Vigenere密碼。常規V @ genere加密作品以下列方式:打破修改後的Vigenere密碼

Plaintext: ATTACKATDAWN 
Key: LEMONLEMONLE 
Ciphertext: LXFOPVEFRNHR 

Regular版本

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密碼。這樣我可以應用一些頻率分析和其他方法。我需要以某種方式重新排列該方程,以便在C上使用LHS上的「previousC」。由於C和previousC都是已知值,因此應該很容易進行反轉(從第一個字符開始)。

我唯一的問題是,如何用C和previousC重寫方程?如果有人能指出這會有很大幫助。

回答

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 

一旦你有定期的密文,打破它像往常一樣。

+0

我只是想實現這一點,似乎再次卡住了。我將公式從簡單版本更新爲實際版本(帶有偏移量),因爲我的語言從字符「!」開始並以「〜」結尾。是否有可能向我展示CR [i]解決方案? – 1337holiday