Project - 2014
Encrypto
A Python encryption tool that transforms plaintext into ciphertext using a modified Vigenere algorithm - with a tkinter GUI for easy interaction.
The Encrypto interface - enter your message, provide a key, and encrypt.
Overview
Classical cryptography
with a modern interface
Encrypto implements a modified version of the Vigenere cipher - one of history's most famous polyalphabetic substitution ciphers. Rather than a simple character shift like Caesar's cipher, the Vigenere uses a keyword to vary the substitution at each position, making frequency analysis significantly harder.
The modification extends the classical algorithm to handle a broader character set and adds additional transformation steps. A tkinter GUI wraps the algorithm, providing text fields for input, key entry, and output display - making encryption and decryption accessible without touching the command line.
Language
Python
Algorithm
Vigenere
GUI
tkinter
Type
Polyalphabetic
Operations
Encrypt + Decrypt
Year
2014
Encryption (left) and decryption (right) - symmetric key operations.
Technical
The Vigenere cipher, extended
The classical Vigenere cipher works by shifting each plaintext character by the corresponding character in a repeating keyword. If the keyword is "KEY" and the plaintext is "HELLO", H is shifted by K(10), E by E(4), L by Y(24), and so on. This creates a polyalphabetic cipher where the same plaintext letter can map to different ciphertext letters depending on its position.
Encrypto's modification extends this concept beyond the 26-letter alphabet, handles mixed case, and applies additional transformations that make the output more resistant to casual analysis. The symmetric nature means the same key encrypts and decrypts - enter the ciphertext with the original key to recover the plaintext.
Context
An early exploration of algorithms
Built in 2014, Encrypto represents an early exploration of algorithm implementation and GUI programming. The Vigenere cipher provides a perfect learning exercise - simple enough to implement cleanly, complex enough to require careful thought about character mapping, key cycling, and edge cases.