O'Reilly logo
live online training icon Live Online training

Introduction to encryption

A hands-on course on applying symmetric and asymmetric encryption

Michael Pound

Encryption is arguably the most important privacy-preserving technology available today, protecting our data and our intellectual property. In this hands-on three-hour course, Michael Pound walks you through the fundamental components of modern encryption, including symmetric algorithms, asymmetric algorithms, and hash functions, demonstrating how these algorithms work and how to develop code using them. You'll learn the difference between block and stream ciphers and dive into block cipher modes of encryption, symmetric key exchange, public key certificates, and the role of hash functions in creating secure protocols that use both symmetric and asymmetric cryptography. You'll leave able to apply these algorithms to develop secure end-to-end encryption in your own projects while avoiding common pitfalls.

What you'll learn-and how you can apply it

By the end of this live online course, you’ll understand:

  • The mechanisms used in symmetric and asymmetric cryptography
  • The operation and use of hash functions
  • How cryptographic primitives fit into modern protocols and workflows
  • How to avoid common pitfalls when developing secure protocols

And you’ll be able to:

  • Use a standard cryptographic library to perform common cryptographic operations
  • Combine multiple primitives into an effective end-to-end system
  • Employ safe working practices when developing secure code

This training course is for you because...

  • You're an engineer with development experience who wants to use cryptographic protocols in your systems.
  • You're an engineer who has been tasked with securing existing code.
  • You want a fundamental understanding of modern cryptography.


  • A working knowledge of Python
  • A machine with Python and the Cryptography 2.0+ library installed. Call “pip install cryptography --upgrade” to make sure.

Recommended preparation:

Fluent Python (book chapter)

About your instructor

  • Michael Pound is a lecturer and researcher in computer science at Nottingham University, where he teaches the third-year computer security course, which covers a wide range of topics from cryptography to hardware security and malware. Michael is a regular contributor to the popular YouTube channel Computerphile, where his videos on topics such as image analysis, machine learning, and computer security have accumulated over 4.4 million views from people all over the world.


The timeframes are only estimates and may vary according to how the class is progressing

Introduction to encryption (10 minutes)
- Lecture: Core concepts; the power of XOR; the one-time pad

Symmetric encryption (private key) (40 minutes)

  • Lecture: Confusion and diffusion; stream ciphers; block ciphers; modes of operation
  • Hands-on exercise: Use a symmetric primitive

Break (10 minutes)

Asymmetric encryption (public key) (50 minutes)

  • Lecture: Key exchange (e.g., Diffie-Hellman); public key cryptography (e.g., RSA); digital signatures
  • Hands-on exercise: Perform a key exchange

Hash functions (10 minutes)
- Lecture: Core concepts; where they are used

Break (10 minutes)

Complete systems (40 minutes)

  • Lecture: Confidentiality versus authenticity; combining primitives into protocols; TLS/SSL (HTTPS); important security considerations and practical tips
  • Hands-on exercise: Use AEAD

Wrap-up and Q&A (10 minutes)