Clipper Encryption is my attempt at replicating the Enigma machine, notably used to transmit ultra secret communications during WW2 by Nazi Germany. You might know it from the movie “The Imitation Game.”

https://github.com/kermitine/Clipper
Why is the versioning so wack?
Clipper is actually 3 distinct programs: the seed generator, the encryptor, and the decryptor. The seed generator generates a 52 digit long seed from a string, which is then used to encrypt and decrypt the word.
How does the seed work?
Alright, well I lied a bit just a second ago. The 52 digit seed is technically a list, with 26 distinct 2 digit numbers. Why 26? Each list entry corresponds to a letter in the alphabet. There are no duplicates, so effectively, the seed is a list with the numbers 1-26, in an order based on the seed word.
How are words encrypted?
To put it simply, each list entry (0-25, because python indexes start at 0 instead of 1) corresponds to sequential letters in the alphabet (index 0 = A, index 1 = B, etc.). Then, based on the number in that index, it’ll assign a new letter.
Example
Say you want to encrypt “ABC”, and the first 6 digits of your generated seed are “071922”. [07] corresponds to index 0 (A), [19] corresponds to index 1 (B), and [22] corresponds to index 2 (C).
G is the 7th letter of the alphabet, meaning “A” will get replaced with “G”.
S is the 19th letter of the alphabet, meaning “B” will get replaced with “S”.
V is the 22nd letter of the alphabet, meaning “C” will get replaced with “V”
So, ABC –> GSV
Simple enough, right?
WRONG!
This is where we introduce the Clipper Variable Cipherkey (CVC.) This is what differentiates Clipper from a standard Caesarian Cipher.
Clipper Variable Cipherkey
It’s a pretty big name for something relatively simple. After each word, it “shifts” the seed to the right, with the last entry becoming the first, the first becoming the second, etc.
The big difference here is that this makes it virtually impossible to crack through traditional means. Say you were encrypting:
“Hello Hello Hello”
A traditional Caesarian Cipher would output something like:
“Cvmmb Cvmmb Cvmmb”
Like a traditional Caesar Cipher, each letter is assigned a single, new one. However, with the CVC, the output would be like:
“Cvmmb Bnggp Urttv”
While it looks pretty obvious here, in a full sentence, it would be nearly impossible to differentiate words.
Proof
Example Sentence: The quick brown fox jumps over the lazy dog.
I encrypted that sentence first using a standard Caesarian Cipher by using the online tool https://cryptii.com/pipes/caesar-cipher, with a shift of 7.
Outputted Ciphertext: Aol xbpjr iyvdu mve qbtwz vcly aol shgf kvn.
By popping the Ciphertext into a general decoder (the one I used is https://www.cachesleuth.com/multidecoder/), it can be instantly decoded. Try it for yourself.

Now, let’s try it with Clipper, with the same sentence.
Seed word: “Ayrik”
Outputted Ciphertext: Roy Hipug thcrz wzr yqozn gqtc eus xifk mbs.
Now, we can try again with the multidecoder:

100% match? Yeah, sure.
Have I made my point yet?