4.64 out of 5
4.64
42 reviews on Udemy

# Public Key Cryptography From Scratch In Python

Lean back on public key cryptography and leave the rest to it. Hands on programming course for public key infrastructure
Instructor:
Sefik Ilkin Serengil
264 students enrolled
English
Learn different public key cryptography algorithms
Adapt cryptography in daily life cycle
Can use encryption, key exchange and digital signatures

Public key cryptography empowers data encryption, secure data transmission, digital signatures, authentication, privacy or confidentiality and key exchange mechanisms for symmetric key algorithms. This course covers the most common public key algorithms: Diffie Hellman, RSA, ElGamal and DSA.

This is a hands on programming course including theoretical background and practical usage for real world problems to explore different public key algorithms.

1
Introduction

### Diffie Hellman Key Exchange Algorithm

1
Diffie Hellman Key Exchange Overview

Diffie hellman key exchange protocol enables to generate shared keys between parties in a secure way. We'll mention the background of the algorithm.

2

We'll adapt Diffie Hellman Key Exchange algorithm in python. Also, we'll use shared key in symmetric encryption.

### RSA

1
RSA Overview

RSA is the most common public key cryptography algorithm. Today, we'll mention its key generation and encryption - decryption procedures.

2
Testing Coprimeness: Euclidean Algorithm

In RSA Overview, we've mentioned that randomly generated e and totient function must be coprime (or relatively prime). The question is that how can this tested? Euclidean algorithm finds the greatest common divisors. If GCD is equal to 1, then these two numbers are coprime. In this lecture, we'll mention the euclidean algorithm.

3
Finding Multiplicative Inverse: Extended Euclidean Algorithm

In RSA Overview, we've mentioned that randomly generated e and its multiplicative inverse d are public and private key pairs. So, how can we calculate the multiplicative inverse? Extended euclidean algorithm finds the multiplicative inverse of an integer faster. We'll mention the extended euclidean algorithm.

4
Implementation in Python

Until now, we have mentioned the key generation and encryption - decryption procedures. Now, we'll adapt all of these steps into a python code. Also, we'll work on really large prime numbers.

5
Digital Signatures Overview

RSA can be used for signing messages digitally and verifying them. In this video, we'll mention the overview of digital signatures.

6
7
Key Exchange Overview

We are going to use RSA algorithm to exchange key between parties.

8
Key Exchange with RSA in Python

We are going to adapt key exchange schema to python in this lecture

### ElGamal Cryptosystem

1
ElGamal Encryption Overview
2
3
ElGamal Digital Signature Overview
4

1
DSA Overview
2

### Discrete Logarithm Problem

1
Discrete Logarithm Problem

Decryption is handled by m = c^privatekey mod n formula. One can restore the message for known ciphertext, private key and n. However, extracting private key is not easy task for knwon message, ciphertext and n even though an attacker has plaintext, ciphertext pair. This refers to discrete logarithm problem.

2
Attacking DLP with Brute Force Method
3
Shank's Baby Step Giant Step Algorithm
4
You can view and review the lecture materials indefinitely, like an on-demand channel.
Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don't have an internet connection, some instructors also let their students download course lectures. That's up to the instructor though, so make sure you get on their good side!
4.6
4.6 out of 5
42 Ratings

#### Detailed Rating

 Stars 5 35 Stars 4 3 Stars 3 1 Stars 2 1 Stars 1 2
30-Day Money-Back Guarantee

#### Includes

2 hours on-demand video