Skip to main content
Cybersecurity

Cryptography Tutorial with Examples.

Applied cryptography tutorial you can run: hashes and HMACs, AES-GCM, nonce reuse, password work factors, signatures, a local CA, TLS and key rotation.

Beginner

Start here — no prior experience needed

2 lessons

Intermediate

For developers with core concepts down

5 lessons

Advanced

Production-grade patterns for experienced engineers

1 lesson

Also part of Cryptography

Taught in other topics. Each link opens the lesson in its home topic.

9 lessons
python intermediate
5 min read

Run real attacks against local Python code and fix them: SQL injection, shell injection, path traversal, weak tokens and password hashes.

java advanced
5 min read

Secure Java coding by running it: allowlist validation, SQL injection vs PreparedStatement, PBKDF2 hashing, SecureRandom, AES-GCM and KeyStore.

data-engineering advanced
5 min read

Run the same email and SSN through three PII techniques and see what each gives up: hashing for joins, masking for display, tokenization for reversal.

fastapi intermediate
5 min read

Hash passwords with pwdlib and Argon2, log in through FastAPI's OAuth2 password flow, issue JWTs, and see wrong, expired and tampered tokens get 401s.

java intermediate
5 min read

Issue and verify JWTs in Spring Boot 3 with Spring Security's resource server: login endpoint, roles claim, forged and expired tokens, all curled.

javascript advanced
5 min read

Learn how to protect JavaScript applications from XSS, CSRF, prototype pollution, insecure JWT handling, and other common web security vulnerabilities.

github-actions beginner
5 min read

GitHub Actions masks a secret printed directly to the log — but transforming it first (base64, a substring, a hash) produces output the masker never recognizes as the secret, leaking it in full.

terraform intermediate
5 min read

sensitive = true masks a secret in plan output, but state keeps it in plain text. Real runs show both, plus why an ephemeral variable is refused.

ansible beginner
5 min read

The same variable name, defined in three places, resolves to three different values depending on where you look — verified by actually stacking group_vars, host_vars, and -e against each other.