Learning path

Information security

Learn the safe defaults: hashing, password storage, message authentication, why keys must not be reused, SQL injection, and secure randomness.

About this subject

Information security protects the confidentiality, integrity, and availability of data and systems. Most real failures come from a few repeated mistakes, such as weak password storage, unauthenticated data, predictable secrets, and injection, so learning the safe defaults pays off quickly.

This path covers cryptographic hashing, storing passwords with a salt and a slow function, HMAC authentication, the one-time pad and key reuse, SQL injection, and secure random tokens. The lessons teach defensive practice only. Each lesson uses a small, complete program that runs on its own. Python has the full sequence. The other languages listed below add lessons that use that language's own idioms and standard library, such as Java threads, C++ smart pointers, C# LINQ, or Node.js streams, and appear only for the topics the language supports. The programs are simplified models chosen to make an idea visible, so they are a foundation for further study rather than a replacement for a full course or for production-grade software. Never write your own cryptography for real systems: use maintained, reviewed libraries.

Before you start: Strings and bytes, and basic SQL for the injection lesson.

  1. 1

    Python

    Readable code for automation, data, and first programs.

  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11