  This work details CipherGAN, an architecture inspired by CycleGAN used for
inferring the underlying cipher mapping given banks of unpaired ciphertext and
plaintext. We demonstrate that CipherGAN is capable of cracking language data
enciphered using shift and Vigenere ciphers to a high degree of fidelity and
for vocabularies much larger than previously achieved. We present how CycleGAN
can be made compatible with discrete data and train in a stable way. We then
prove that the technique used in CipherGAN avoids the common problem of
uninformative discrimination associated with GANs applied to discrete data.
