Cryptography and Hashing Fundamentals in Python and Java

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

4.75 (1103 reviews)
Udemy
platform
English
language
Other
category
instructor
Cryptography and Hashing Fundamentals in Python and Java
11,134
students
15.5 hours
content
Nov 2023
last update
$84.99
regular price

What you will 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)

Why take this course?

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!

Content

Introduction

Introduction

Cryptography Fundamentals

What is cryptography?
Symmetric encryption
Asymmetric encrypion

Caesar Cipher

Caesar cipher introduction I - basics
Caesar cipher introduction II - encryption and decryption
Caesar cipher introduction III - example
Caesar cipher implementation I (Python)
Caesar cipher implementation II (Python)
Caesar cipher implementation I (Java)
Caesar cipher implementation II (Java)

Cracking Caesar Cipher

Caesar cipher - brute force attack
Cracking Caesar-cipher with brute-force (Python)
Cracking Caesar-cipher with brute-force (Java)
Frequency analysis
Frequency analysis implementation
Cracking Caesar-cipher with frequency analysis (Python)
Cracking Caesar-cipher with frequency analysis (Java)

Detecting Language

Detecting english language introduction
Detecting english language implementation I (Python)
Detecting english language implementation II (Python)
Detecting english language implementation (Java)
Detecting english language implementation II (Java)
Language detection with machine learning

Vigenere Cipher

Vigenere cipher introduction I
Vigenere cipher introduction II
Vigenere cipher introduction III
Vigenere cipher implementation I (Python)
Vigenere cipher implementation II (Python)
Vigenere cipher implementation (Java)

Cracking the Vigenere Cipher

Kasiski-algorithm introduction I
Kasiski-algorithm introduction II
Kasiski-algorithm introduction III
Kasiski-algorithm introduction IV

One Time Pad (Vernam Cipher)

One time pad introduction I
One time pad introduction II
One time pad introduction III
Random vs pseudorandom numbers
One time pad implementation I (Python)
One time pad implementation II (Python)
One time pad implementation (Java)

Cracking One Time Pad

Cracking one time pad - Shannon's secrecy

Data Encryption Standard (DES)

DES cryptosystem theory I
DES cryptosystem theory II
DES cryptosystem theory III
DES cryptosystem theory IV
DES cryptosystem theory V
DES cryptosystem theory VI
DES cryptosystem implementation I (Python)
DES cryptosystem implementation II (Python)
DES cryptosystem implementation (Java)

Cracking Data Encryption Standard (DES)

Brute-force DES cracking
Linear cryptoanalysis
Differential cryptoanalysis

Advanced Encryption Strandard (AES)

AES cryptosystem theory I
AES cryptosystem theory II
AES cryptosystem theory III
AES cryptosystem theory IV
AES cryptosystem theory V
AES cryptosystem implementation
AES cryptosystem implementation (Java)

Cracking Advanced Encryption Standard (AES)

Shannon's confusion and diffusion

Symmetric Cryptosystems

Problems with private key cryptosystems
Sysmmetric cryptosystems basics
Random numbers and prime numbers

Modular Arithmetic

Modular arithmetic fundamentals
Finding primes - naive approach
Naive primality test implementation (Java)
Finding primes - advanced algorithms
Integer factorization problem
Integer factorization implementation
Factorization implementation (Java)
Discrete logarithm problem
Discrete logarithm implementation
Discrete logarithm implementation (Java)
Why to use prime numbers at all?

Diffie-Hellman Key Exchange

Diffie-Hellman key exchange basics
Diffie-Hellman key exchange - the algorithm
Diffie-Hellman key exchange - example
Why to use primes and primitive root?
Diffie-Hellman key exchange implementation

Cracking Diffie-Hellman Cryptosystem

Cracking Diffie-Hellman cryptosystem
Man in the middle attack

RSA

RSA cryptosystem basics
RSA cryptosystem - the algorithm
RSA cryptosystem - example
Modular inverse introduction
Modular inverse implementation (Python)
Modular inverse implementation (Java)
RSA cryptosystem implementation (Python)
RSA cryptosystem implementation (Java)

Cracking RSA

The problem of factorization

Course Materials (DOWNLOADS)

Course materials

DISCOUNT FOR OTHER COURSES!

90% OFF For Other Courses

Our review

🌟 **Overall Course Rating: 4.75/5** 🌟 Based on recent reviews, the course has been generally well-received with a high rating of 4.75 out of 5 stars. The majority of students have found the course to be informative, well-structured, and the instructor's teaching style to be effective for a variety of learning paces and styles. **Pros:** - **Comprehensive Content:** The course covers a wide range of topics in cryptography, from basic principles to more advanced concepts like Authenticated Encryption and AEAD standards. - **Clear Explanations:** The instructor's explanations are praised for being clear, concise, and well-organized, making it easier for learners to grasp complex subjects. - **Visual Aids:** The use of visuals, diagrams, and mouse tracking along with the narration is appreciated, as it helps learners follow along with the material. - **Didactic Approach:** Holczer's didactic approach is highly commended, with many students noting his deep dive into the subject matter and his pedagogical prowess. - **Practical Application:** The course provides practical coding examples, which are particularly helpful for learners who prefer a hands-on approach to learning. - **Multilingual Appeal:** The course is appreciated by students from different backgrounds, including those in France, demonstrating its global applicability and appeal. **Cons:** - **Unanswered Questions:** Some students have reported that their questions remained unanswered, which has impacted their learning experience and led to a deduction of stars in their reviews. - **Repetition:** A few students found the course material to be slightly repetitive, which might be less engaging for those who prefer a more concise presentation or are learning on the job. - **Java vs Python:** It is suggested that Java and Python implementations could be separated into different tracks within the same course to cater to different programming preferences. - **Code Implementation Details:** There were expectations for more detailed code implementations, particularly for algorithms like AES, DES, DSA, and ECDSA, where only theoretical explanations were provided without practical examples. - **Pacing:** Some students felt that the instructor spoke too quickly or pasted code into the IDE while speaking, making it difficult to follow along in real-time. - **Accessibility of Content:** A few reviews pointed out that the pace and use of certain tech terms or abbreviations could be challenging for non-native English speakers or those new to the field, suggesting improved captioning for better comprehension. **Recommendations for Improvement:** - **Improve Engagement:** Address the concerns regarding unanswered questions by ensuring that student inquiries are addressed promptly. - **Offer Diverse Learning Tracks:** Consider offering separate modules or tracks for different programming languages to cater to a wider audience. - **Enhance Practical Examples:** Provide more detailed, step-by-step code implementations to complement the theoretical explanations. - **Adjust Presentation Style:** Work on adjusting the pace of the course and clarify instructions during live coding demonstrations. - **Improve Accessibility:** Ensure that all content is accessible to a diverse audience, including those who may not be native English speakers or are new to the field of cybersecurity. In conclusion, this course is highly recommended for its comprehensive coverage of cryptography and its effectiveness in teaching complex concepts through clear explanations and practical examples. With some improvements in engagement and accessibility, it could serve as an even more valuable resource for learners across various backgrounds and skill levels.

Coupons

DateDiscountStatus
11/16/201995% OFF
expired
7/14/202390% OFF
expired

Charts

Price

Cryptography and Hashing Fundamentals in Python and Java - Price chart

Rating

Cryptography and Hashing Fundamentals in Python and Java - Ratings chart

Enrollment distribution

Cryptography and Hashing Fundamentals in Python and Java - Distribution chart

Related Topics

1694794
udemy ID
5/14/2018
course created date
7/8/2019
course indexed date
Bot
course submited by