Introduction
Cryptography is everywhere
()
Basic terminology
()
Intro to Codespaces
()
1. Symmetric Cryptography Overview
Cryptography's role
()
Kerckhoffs's principle
()
Symmetric keys
()
Block vs. stream ciphers
()
Cryptographic hash algorithms
()
Challenge: Building a hash algorithm
()
Solution: Building a hash algorithm
()
2. Representing and Manipulating Binary Data
Binary representation
()
Characters
()
Integers
()
Floating point numbers
()
Boolean operations
()
Padding
()
Challenge: "QR" code printer
()
Solution: "QR" code printer
()
3. Fundamental Algorithms and Components
Simple substitution ciphers
()
Polyalphabetic substitution ciphers
()
Permutation and transposition ciphers
()
Simple one-time pads with XOR
()
S-boxes and P-boxes
()
Feistel networks
()
Linear-feedback shift registers (LFSRs)
()
Challenge: Software-based LFSR
()
Solution: Software-based LFSR
()
4. Symmetric Algorithms
The Data Encryption Standard (DES)
()
The Advanced Encryption Standard (AES)
()
AES and DES in practice
()
The RC4 stream cipher
()
Challenge: Encrypting, decrypting, and hashing with OpenSSL
()
Solution: Encrypting, decrypting, and hashing with OpenSSL
()
5. Block Cipher Modes
Introduction to block cipher modes
()
Cipher block chaining (CBC)
()
CFB: Cipher feedback
()
OFB: Output feedback
()
CTR: Counter mode
()
Challenge: Building a block cipher with CBC mode
()
Solution: Building a block cipher with CBC mode
()
6. Keys and a Little Asymmetry
Exchanging keys
()
Key length and large numbers
()
The importance of randomness to cryptography
()
Modular arithmetic
()
Diffie–Hellman key exchange
()
Challenge: Implementing Diffie–Hellman
()
Solution: Implementing Diffie–Hellman
()