Fundamental Cryptography in Theory and Python
Written by Nikos Vaggalis   
Tuesday, 20 September 2022

Learn to do Cryptography with Python and for free too. A course by computer scientist of ETH Zürich and cybersec expert Cyrill Gössi. He teaches the concepts of Cryptography with a practical approach.

And what better way of exploring the four classic concepts of Cryptography, that is confidentiality, integrity, authenticity and non-repudiation, than with Python.

Gössi developed this course with a few goals in mind. The first that by completing the course you would have gained a good understanding of cryptography as a tool to realize the aims of information security. The second would be to furnish good knowledge about the existing fundamental cryptographic primitives and an understanding of the security concerns associated with each of them. And, finally, the third goal would be to become able to apply that theoretical understanding of fundamental cryptography by using the various cryptographic primitives in Python.

In concrete terms this would involve such things as symmetric, asymmetric, hybrid encryption and key exchanges or primitives such as the AES block cipher ,the RSA encryption scheme, and the Diffie-Hellman key exchanges EDH and ECDHE. All these relate to Confidentiality.

On the topic of Integrity, the cryptographic hash functions such as MD5, SHA-1, SHA-2 and SHA-3 are introduced.

As far as Authenticity is concerned, message authentication codes with HMACs, authenticated encryption with the Encrypt-then-MAC approach, and authenticated encryption with associated data with the GCM block cipher mode of operation, will be examined.

Finally on the Non-Repudiation front, we will have a close look at digital signatures based on RSA, DSA, Elliptic-Curve based DSA, Ed25519 and Ed448.

Theory and its practice in Python go hand in hand. Furthermore you will not just learn how to use the cryptographic primitives in Python, but you will additionally learn, how to implement most of these primitives in Python yourself.

The syllabus in detail:

1-Introduction and content of course
2-Cryptography & its classic security goals
3-Confidentiality as a security goal
4-Symmetric encryption with AES and ECB/CBC
5-Using insecure AES-ECB in Python
6-Using secure AES-CBC in Python
7-Implementing AES in Python #1
8-Implementing AES in Python #2
9-Implementing AES in Python #3
10-Implementing AES in Python #4
11-Implementing AES in Python #5
12-Implementing AES-ECB/CBC in Python #1
13-Implementing AES-ECB/CBC in Python #2
14-Asymmetric encryption with RSA
15-Using RSA in Python
16-Implementing RSA in Python #1
17-Implementing RSA in Python #2
18-Implementing RSA in Python #3
19-Hybrid encryption & key exchanges (EC)DHE
20-Implementing hybrid RSA-AES encryption in Python
21-Using EDH and ECDHE in Python
22-Implementing a P-256 ECDHE in Python
23-Integrity as a security goal
24-Hash function structure and properties
25-Hash function security
26-Using MD5, SHA-1, SHA-2, SHA-3 in Python
27-Implementing SHA-256 in Python #1
28-Implementing SHA-256 in Python #2
29-Authenticity as a security goal
30-HMAC, Encrypt-then-MAC and GCM
31-Using HMAC in Python
32-Implementing HMAC in Python
33-Implementing Encrypt-then-MAC in Python
34-Using AES-GCM in Python
35-Implementing AES-GCM in Python #1
36-Implementing AES-GCM in Python #2
37-Non-repudiation as a security goal
38-Digital signatures
39-Using RSA-PSS & Ed25519 signatures in Python
40-Recap and summary

These 40 lessons of 2 up to 15mins in duration are provided as a Youtube playlist, while the accompanying Python code is up on its Github repo.

To sum it up, this is a great learning opportunity, combining two essential technologies, Cryptography and Python. Both very valuable for programming as well as careerwise for its students.



More Information

Fundamental cryptography with Python-Youtube playlist

Fundamental cryptography with Python-Github

Related Articles

Knock Yourself Out With 91 Python Videos

Play & Learn With CryptoHack



To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.


Julia 1.8 Improves Apple Silicon Support

Julia 1.8 has been released with improvements including better support for Apple Silicon, and support for typed globals.'s Practical Deep Learning for Coders Has Been Updated
26/08/2022 has just published an update to its free online course Practical Deep Learning for Coders. The update covers new techniques and libraries and for continuity the original 2020 version is still  [ ... ]

More News





or email your comment to:

Last Updated ( Tuesday, 20 September 2022 )