Anatoli Kot

Anatoli Kot

Software Engineer · Cybersecurity

security

Password Encryption Program

Early Python/Tkinter password manager that saves usernames with passwords encoded by a home-made rotation cipher, and decodes them on request with the same key.

Role

Developer

Problem

A first pass at encryption basics: keep saved passwords out of plaintext by substituting each character through a key. It's a Caesar-style substitution, not real cryptography, and the key itself is saved unencrypted in key.txt next to the password file.

Tech Stack

PythonTkinter

How It Works

Set Rotation KeyEncode & SaveDecode on Lookup
  1. 01A Tkinter login window guards a menu with Add Password, Get Password, See list, and Set Key.
  2. 02Set Key takes a rotation number and builds a substitution table by shifting every letter and digit along a combined a–z / 1–9 / A–Z cycle, then writes the table to key.txt.
  3. 03coding.py is a closure-based dispatcher that responds to messages (set_key, import_key, export_key, encoding, decoding). Add Password loads the key and appends the username and encoded password to mypasswords.txt.
  4. 04Get Password looks up a username and decodes its entry by inverting the substitution table.

What I Learned

  • A first, simple encode/decode exercise before working with the real primitives (ECC, AES-GCM) used later in the Secure Voting System project.
  • In hindsight it shows why home-made ciphers fail: a fixed character substitution keeps the length and repeated characters, and the key sits in plaintext beside the data it protects.
  • Writing coding.py as a function that dispatches on message strings was an early exercise in message passing and hidden state, before reaching for classes.
System Status
>_anatoli@portfolio|OS: PortfolioOS (Next.js 16.3.4)Kernel: React 19.2.8CPU: TurbopackProjects: 14Languages: TypeScript, JavaScript, Python, Java