Question

Im working on an algorithm to break a modified Vigenere Cipher. The regular Vigenere cipher works in the following way:

Plaintext: ATTACKATDAWN
Key: LEMONLEMONLE
Ciphertext: LXFOPVEFRNHR

Regular Version

CR[i] = (P[i] - 33 + K[i]) mod 94 + 33

Modified Version

CM[i] = (P[i] - 33 + K[i] + CM[i-1] - 33) mod 94 + 33

Notice how the modified version uses previous state/character to generate the new one. My theory to break it is to reverse the modified version back to the regular Vigenere cipher. This way I can apply some frequency analysis and other methods. I need to somehow rearrange that equation such that I have "previousC" on the LHS with C. Since both C and previousC are known values it should be easy to do the reversal (starting with the first character).

My only problem is, how do I rewrite the equation in terms of C and previousC? If someone could point that out that would help a lot.

Was it helpful?

Solution

CR represents the regular Viginere ciphertext, CM the modified Viginere ciphertext

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

Now simply solve for the original ciphertext CR

CR[i] = (CM[i] - CM[i-1]) mod 26

Once you have the regular ciphertext, break it as usual.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top