Practical Cryptography

Practical Cryptography is built for developers who want to learn the fundamentals that underpin the security of applications. This course will help you build and understand secure digital systems. As a result, you will be a much more valuable engineer to the many organizations that work in security-critical industries

Why Learn Cryptography?

Crypto-literate developers are more valuable to tech companies, and as a result, tend to have higher salaries.

Many new developers, especially those without formal training, have a cryptography-sized hole in their education.

What’s In The Course?

This course begins with an overview of cryptography definitions, use-cases, and common misconceptions. Later we dive into some of the most widely used cryptosystems – ciphers and hashes.

The majority of Practical Cryptography is multi-choice style questions, though there are many coding exercises as well. The coding projects in this course are all written in Go, a language becoming more and more important for backend and security engineers. If you are uncomfortable with Go, take our Go Mastery course first! All coding is done right in the browser, no need to mess around with configuring a local development environment.


1 – Intro

  • Cryptography Basics and Definitions
  • Encrypting Files
  • Encoding vs Encryption
  • Brute Force Attacks

2 – Stream Ciphers

  • Caesar Ciphers
  • XOR and cryptography math
  • One Time Pad

3 – Block Ciphers

  • Key Schedules
  • Feistel Networks
  • Data Encryption Standard (DES)
  • Advanced Encryption Standard (AES)

4 – Hash Functions

  • Avoiding Collisions
  • Building a hash from scratch
  • Key derivation functions
  • Salting and Rainbow Tables
  • Production Bcrypt