I used to think encryption was simple: take a password, use it as the key, done. Then I built a small encryption tool myself, and realized that's not how any of this works.

This is the first post in a series where I'm documenting what I'm actually learning while building CryptoGraphy, a small Python project I'm using to study applied cryptography properly instead of just calling library functions and hoping they're right. My background is in SOC analysis and pentesting — I'm used to finding broken crypto, not building it. Writing this project is forcing me to understand the "why" behind the fixes I used to just recommend.

The naive approach

If you've never dug into how encryption actually works, this looks completely reasonable:

AES.encrypt(password, data)