# Cryptography and Hashing Fundamentals in Python and Java

## Description

In this course you will learn about **cryptography and hashing** in **Python and Java **as well. You will understand most of the private key (symmetric) and pubic key (asymmetric) cryptosystems on a step by step basis. You can learn about the theory as well as the implementation for every cryptographic algorithm – and how to crack these systems (so what are the weaknesses).

**Chapter 1 – Cryptography Fundamentals**

- what is the aim of cryptography?
- private key and public key cryptosystems

**Chapter 2 – Caesar Cipher**

- Caesar cipher theory and implementation
- how to crack Caesar cipher
- frequency analysis and language detection

**Chapter 3 – Vigenere Cipher**

- Vigenere cipher theory and implementation
- how to crack Vigenere cipher with Kasiski-algorithm

**Chapter 4 – One Time Pad (Vernam Cipher)**

- random and pseudo-random numbers
- the XOR logical operator
- one time pad theory and implementation
- why is it impossible to crack Vernam cipher?
- Shannon’s secrecy

**Chapter 5 – Data Encryption Standard (DES)**

- data encryption standard (DES) theory and implementation
- cryptoanalysis techniques
- linear cryptoanalysis and differential cryptoanalysis

**Chapter 6 – Advanced Encryption Standard (AES)**

- advanced encryption standard (AES) theory and implementation
- Shannon’s confusion and diffusion

**Chapter 7 –** **Asymmetric Cryptosystems**

- problems with private key cryptosystems
- random numbers and prime numbers in cryptography

**Chapter 8 – Modular Arithmetic**

- modular arithmetic fundamentals
- finding prime numbers – naive approach and advanced algorithms
- integer factorization problem
- discrete logarithm problem

**Chapter 9 – Diffie-Hellman Key Exchange**

- Diffie-Hellman key exchange algorithm theory and implementation
- prime numbers and primitive roots
- man-in-the-middle attack

**Chapter 10 – RSA Algorithm**

- RSA algorithm theory and implementation
- the problem of factorization

**Chapter 11 – Advanced Modular Arithmetic**

- Euclidean and the greatest common divisor (GCD) problem
- extended Euclidean algorithm (EGCD)
- modular inverse problem

**Chapter 12 – Elliptic Curve Cryptography (ECC)**

- elliptic curve cryptography theory and implementation
- why does Bitcoin use elliptic curve cryptography?

**Chapter 13 – Cryptographic Hashing**

- what is hashing in cryptography?
- properties of hashing
- birthday paradox
- MD5 and SHA algorithms

Thanks for joining my course, let’s get started!

## Who this course is for:

- Python or Java developers curious about cryptography!

## Requirements

- You should have an interest in cryptography as well as some programming knowledge in Python or Java!

**Last Updated 10/2021**

## Download Links

**Direct Download**

Cryptography and Hashing Fundamentals in Python and Java.zip (3.8 GB) | Mirror