Cryptography and Hashing Fundamentals in Python and Java

Cryptography and Hashing Fundamentals in Python and Java

English | MP4 | AVC 1920×1080 | AAC 44KHz 2ch | 14 Hours | 3.89 GB

Private and Public Key Cryptosystems, DES, AES, Cryptoanalysis, RSA, Elliptic Curve Cryptography and Hashing

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

What you’ll learn

  • Understand the basics of private key encryption systems
  • Caesar cipher and Vigenere cipher
  • Frequency analysis and the Kasiski algorithm
  • One Time Pad (OTP) and Shannon secrecy
  • Random and pseudo-random numbers
  • Data Encryption Standard (DES) and Advanced Encryption Standard (AES)
  • Understand the basics of public key encryption systems
  • RSA and Diffie-Hellman key exchange algorithm
  • Elliptic Curve Cryptography
  • Modular arithmetic basics (Fermat’s theorem, finding primes, integer factorization and discrete logarithm)
  • Euclidean algorithm (greatest common divisor problem) and the extended Euclidean algorithm
  • Understand hashing (MD5 and SHA)
Table of Contents

Introduction
1 Introduction

Cryptography Fundamentals
2 What is cryptography
3 Symmetric encryption
4 Asymmetric encryption

### SYMMETRIC (PRIVATE KEY) CRYPTOGRAPHY ###
5 Symmetric cryptosystems

Caesar Cipher Theory
6 What is Caesar cipher
7 Caesar cipher – encryption and decryption
8 Caesar cipher example

Caesar Cipher Implementation (Python)
9 Caesar cipher implementation I
10 Caesar cipher implementation II
11 Caesar cipher implementation III

Caesar Cipher Implementation (Java)
12 Caesar cipher implementation I
13 Caesar cipher implementation II
14 Caesar cipher implementation III

Cracking Caesar Cipher
15 Cracking Caesar cipher with brute-force attack
16 Cracking Caesar-cipher with brute-force implementation (Python)
17 Cracking Caesar-cipher with brute-force implementation (Java)
18 What is frequency analysis
19 Frequency analysis implementation (Python)
20 Frequency analysis implementation (Java)
21 Cracking Caesar-cipher with frequency analysis (Python)
22 Cracking Caesar-cipher with frequency analysis (Java)

Detecting Languages
23 Detecting english language introduction
24 Detecting english language implementation I (Python)
25 Detecting english language implementation II (Python)
26 Detecting english language implementation III (Python)
27 Detecting english language implementation I (Java)
28 Detecting english language implementation II (Java)
29 Detecting english language implementation III (Java)
30 Language detection with machine learning

Vigenere Cipher Theory
31 What is the Vigenere cipher
32 Vigenere cipher encryption and decryption
33 Vigenere cipher example

Vigenere Cipher Implementation (Python)
34 Vigenere cipher implementation I
35 Vigenere cipher implementation II

Vigenere Cipher Implementation (Java)
36 Vigenere cipher implementation I
37 Vigenere cipher implementation II

Cracking the Vigenere Cipher (Kasiski Algorithm)
38 Kasiski-algorithm introduction I
39 Kasiski-algorithm introduction II
40 Kasiski-algorithm introduction III
41 Kasiski-algorithm introduction IV

One Time Pad (Vernam Cipher)
42 What is a One Time Pad (OTP)
43 One time pad and the XOR logical operator
44 One time pad example

Randomness in Cryptography
45 Random and pseudo-random numbers

One Time Pad Implementation (Python)
46 One time pad implementation I
47 One time pad implementation II
48 One time pad implementation III

One Time Pad Implementation (Java)
49 One time pad implementation I
50 One time pad implementation II
51 One time pad implementation III

Cracking One Time Pad
52 Cracking one time pad – Shannon’s secrecy

Data Encryption Standard (DES)
53 What is the Data Encryption Standard (DES)
54 DES cryptosystem theory II
55 DES cryptosystem theory III
56 DES cryptosystem theory IV
57 DES cryptosystem theory V
58 DES cryptosystem theory VI

Data Encryption Standard (DES) Implementation (Python)
59 DES cryptosystem implementation I
60 DES cryptosystem implementation II
61 DES cryptosystem implementation III
62 DES cryptosystem implementation IV

Data Encryption Standard (DES) Implementation (Java)
63 DES cryptosystem implementation I
64 DES cryptosystem implementation II
65 DES cryptosystem implementation III
66 DES cryptosystem implementation IV

Cracking Data Encryption Standard (DES)
67 Brute-force DES cracking
68 Linear cryptoanalysis
69 Differential cryptoanalysis

Advanced Encryption Standard (AES)
70 AES cryptosystem theory I
71 AES cryptosystem theory II
72 AES cryptosystem theory III
73 AES cryptosystem theory IV
74 AES cryptosystem theory V

Advanced Encryption Standard (AES) Implementation (Python)
75 AES cryptosystem implementation I
76 AES cryptosystem implementation II
77 AES cryptosystem implementation III
78 AES cryptosystem implementation IV

Advanced Encryption Standard (AES) Implementation (Java)
79 AES cryptosystem implementation I
80 AES cryptosystem implementation II

Cracking Advanced Encryption Standard (AES)
81 Shannon’s confusion and diffusion

### ASYMMETRIC (PUBLIC KEY) CRYPTOGRAPHY ###
82 Asymmetric cryptosystems

Asymmetric Cryptosystems
83 Problems with private key cryptosystems
84 Asymmetric cryptosystems basics
85 Random numbers and prime numbers

Modular Arithmetic
86 Modular arithmetic fundamentals
87 Finding primes – naive approach (Python)
88 Finding primes – naive approach (Java)
89 Finding primes – advanced algorithms (Python)
90 Finding primes – advanced algorithms (Java)
91 Integer factorization problem
92 Integer factorization implementation (Python)
93 Integer factorization implementation (Java)
94 Discrete logarithm problem
95 Discrete logarithm implementation (Python)
96 Discrete logarithm implementation (Java)
97 Why to use prime numbers at all

Diffie-Hellman Key Exchange
98 Diffie-Hellman key exchange basics
99 Diffie-Hellman key exchange – the algorithm
100 Diffie-Hellman key exchange – example
101 Why to use primes and primitive roots

Diffie-Hellman Cryptosystem Implementation (Python)
102 Diffie-Hellman key exchange algorithm implementation

Diffie-Hellman Cryptosystem Implementation (Java)
103 Diffie-Hellman key exchange algorithm implementation

Cracking Diffie-Hellman Cryptosystem
104 Cracking Diffie-Hellman cryptosystem
105 Man in the middle attack

RSA
106 RSA cryptosystem basics
107 RSA cryptosystem – the algorithm
108 RSA cryptosystem – example

Advanced Modular Arithmetic
109 Euclidean algorithm (GCD) introduction
110 Euclidean algorithm (GCD) implementation (Python)
111 Euclidean algorithm (GCD) implementation (Java)
112 Modular inverse introduction
113 Modular inverse implementation (Python)
114 Modular inverse implementation (Java)
115 Extended Euclidean algorithm introduction
116 Extended Euclidean algorithm implementation (Python)
117 Extended Euclidean algorithm stack memory visualization
118 Extended Euclidean algorithm implementation (Java)

RSA Implementation (Python)
119 RSA cryptosystem implementation I
120 RSA cryptosystem implementation II
121 RSA cryptosystem implementation III
122 RSA cryptosystem implementation IV

RSA Implementation (Java)
123 RSA cryptosystem implementation I
124 RSA cryptosystem implementation II
125 RSA cryptosystem implementation III
126 RSA cryptosystem implementation IV

Cracking RSA
127 The problem of factorization

Elliptic Curve Cryptography (ECC)
128 Why do we need elliptic curve cryptography
129 What are elliptic curves
130 Point addition and point doubling
131 Double and add algorithm
132 Elliptic curve discrete logarithm problem
133 Elliptic curve based Diffie-Hellman key exchange algorithm
134 Digital signatures with elliptic curves
135 RSA and elliptic curve cryptography
136 Useful article on elliptic curves

Elliptic Curve Cryptography (ECC) Implementation (Python)
137 Elliptic curve cryptography (ECC) implementation I
138 Elliptic curve cryptography (ECC) implementation II
139 Elliptic curve cryptography (ECC) implementation III

Elliptic Curve Cryptography (ECC) Implementation (Java)
140 Elliptic curve cryptography (ECC) implementation I
141 Elliptic curve cryptography (ECC) implementation II
142 Elliptic curve cryptography (ECC) implementation III

Cracking the Elliptic Curve Cryptosystem (ECC)
143 Cracking the elliptic curve cryptosystem

### HASHING ###
144 What is hashing in cryptography
145 Properties of hashing
146 The birthday paradox

Hashing Algorithms Implementation (Python)
147 MD5 hashing algorithm implementation
148 SHA256 hashing algorithm implementation
149 SHA512 hashing algorithm implementation

Hashing Algorithms Implementation (Java)
150 MD5 hashing algorithm implementation
151 SHA256 hashing algorithm implementation

Applications of Cryptography
152 Applications of cryptographic hashes
153 Bitcoin and Ethereum
154 HTTP, HTTPS and TLS
155 WEP and WPA

Course Materials (DOWNLOADS)
156 Course materials

Homepage