Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Holczer Balazs

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

Read more

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.

Enroll now

What's inside

Syllabus

Cracking Caesar-cipher with brute-force implementation (Python)
Introduction
Cryptography Fundamentals
What is cryptography?
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Includes implementations in both Python and Java, which are widely used languages in software development and cybersecurity
Covers both symmetric and asymmetric cryptosystems, providing a comprehensive overview of modern cryptographic techniques
Explores the theory behind cryptographic algorithms, including topics like Shannon's secrecy, confusion, and diffusion
Discusses modular arithmetic, prime number generation, and integer factorization, which are essential concepts in cryptography
Explores cryptoanalysis techniques, such as brute-force attacks, frequency analysis, and the Kasiski algorithm
Discusses elliptic curve cryptography (ECC) and its use in Bitcoin, which is relevant for those interested in blockchain technology

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Crypto and hashing fundamentals

Discusses how to break certain algorithms.
"Learning how to crack systems helps understand their weaknesses."
"The sections on brute-force and frequency analysis are interesting."
"It's valuable to see the limitations of different ciphers."
Provides a solid introduction to core concepts.
"This course seems like a good starting point for cryptography basics."
"It aims to build a fundamental understanding of key algorithms."
"I expect to gain a strong foundation in crypto and hashing."
Explores a wide range of cryptography topics.
"The syllabus spans from classical ciphers to modern AES, RSA, and ECC."
"It covers symmetric, asymmetric crypto, hashing, and underlying math."
"I appreciate the breadth of algorithms discussed in the course."
Offers hands-on coding in both Python and Java.
"It's helpful to see implementations in two widely used languages."
"Seeing the concepts applied in both Python and Java reinforces understanding."
"I can follow along using the programming language I'm most comfortable with."
Combines theoretical concepts with coding examples.
"The course promises to cover both theory and implementation for each algorithm."
"It covers both the 'why' and the 'how' of cryptographic systems."
"I expect to see the mathematical basis alongside practical code."
May focus on breadth over deep dive into advanced topics.
"Given the wide range of topics, some areas might feel introductory."
"I might need external resources for more advanced crypto analysis techniques."
"The coverage of complex math like modular arithmetic might be foundational."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Cryptography and Hashing Fundamentals in Python and Java with these activities:
Review Number Theory Fundamentals
Strengthen your understanding of number theory concepts, which are essential for understanding many cryptographic algorithms covered in the course.
Browse courses on Modular Arithmetic
Show steps
  • Review basic number theory concepts.
  • Practice modular arithmetic problems.
  • Study prime number generation algorithms.
Read 'Serious Cryptography' by Jean-Philippe Aumasson
Gain a deeper understanding of modern cryptographic practices and real-world applications by reading this book.
Show steps
  • Obtain a copy of 'Serious Cryptography'.
  • Read the chapters relevant to the course topics.
  • Take notes on key concepts and examples.
Implement Caesar Cipher in Different Languages
Reinforce your understanding of the Caesar cipher by implementing it in multiple programming languages beyond Python and Java.
Show steps
  • Choose 2-3 programming languages.
  • Implement the Caesar cipher in each language.
  • Test your implementations thoroughly.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Read 'Cryptography Engineering' by Niels Ferguson, Bruce Schneier, Tadayoshi Kohno
Learn about the practical aspects of cryptography and how to avoid common pitfalls in secure system design.
Show steps
  • Obtain a copy of 'Cryptography Engineering'.
  • Focus on chapters related to system design.
  • Consider the security implications of your projects.
Create a Blog Post on a Cryptographic Algorithm
Solidify your understanding of a specific cryptographic algorithm by explaining it in a blog post for a general audience.
Show steps
  • Choose a cryptographic algorithm from the course.
  • Research the algorithm thoroughly.
  • Write a clear and concise blog post.
  • Publish your blog post online.
Build a Simple Encryption Tool
Apply your knowledge by building a tool that implements several encryption algorithms learned in the course.
Show steps
  • Choose 2-3 encryption algorithms to implement.
  • Design the user interface for your tool.
  • Implement the encryption and decryption functions.
  • Test your tool thoroughly.
Contribute to a Cryptography Library
Deepen your understanding by contributing to an open-source cryptography library, gaining experience with real-world code and collaboration.
Show steps
  • Find an open-source cryptography library on GitHub.
  • Identify a bug or feature to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Cryptography and Hashing Fundamentals in Python and Java will develop knowledge and skills that may be useful to these careers:
Penetration Tester
A Penetration Tester, also known as an ethical hacker, simulates cyberattacks to identify vulnerabilities in computer systems and networks. This role requires a strong understanding of security principles and attack techniques. This course provides valuable insights into how cryptographic systems work and how they can be broken. The course content, including cracking Caesar cipher and Vigenere cipher, directly translates to skills used in penetration testing. The practical experience of implementing and breaking cryptographic algorithms, as taught in this course, prepares one to think like an attacker and identify weaknesses in systems.
Cryptography Consultant
A Cryptography Consultant advises organizations on how to best protect their data using cryptographic techniques. This involves assessing security needs, recommending appropriate encryption methods, and implementing cryptographic solutions. This course is particularly relevant because it delves into both the theory and implementation of various cryptographic algorithms. The hands-on experience gained from working with Python and Java to implement and crack cryptographic systems helps you develop the practical expertise required to be a successful Cryptography Consultant.
Security Software Developer
Security Software Developers design, develop, and maintain software tools and applications that enhance security. This role requires strong programming skills and a deep understanding of security principles. This course helps you gain expertise in cryptography and algorithm implementation, which is crucial for developing secure software. The course's hands-on approach allows you to create robust and reliable security tools. The Security Software Developer protects crucial software applications.
Security Engineer
A Security Engineer focuses on protecting computer systems and networks. This career role involves tasks like identifying vulnerabilities, implementing security measures, and responding to security incidents. This course, covering cryptography and hashing in Python and Java, helps you build a foundation in understanding encryption algorithms, which is crucial for protecting data in transit and at rest. The course's exploration of cracking cryptographic systems enhances your ability to anticipate and defend against potential attacks that a Security Engineer may face.
Cloud Security Engineer
Cloud Security Engineers specialize in securing cloud-based infrastructure and applications. They implement security measures, monitor for threats, and ensure compliance with security policies in cloud environments. This course helps you understand the cryptographic principles necessary for protecting data in the cloud. The exploration of encryption algorithms, as explained in the course, helps Cloud Security Engineers ensure data confidentiality and integrity. The Cloud Security Engineer's cloud environment should always be secure.
Application Security Engineer
The Application Security Engineer specializes in securing software applications against threats. The work involves performing security audits, identifying vulnerabilities in code, and implementing security best practices during the software development lifecycle. This course helps you gain a deep understanding of cryptographic principles and their application in different programming languages. Specifically, understanding private and public key cryptosystems, as taught in this course, prepares you for protecting sensitive data within applications. The Application Security Engineer finds the practical coding examples particularly useful.
Network Security Engineer
A Network Security Engineer is responsible for designing, implementing, and maintaining network security infrastructure. This role involves configuring firewalls, intrusion detection systems, and other security devices. This course helps you develop a strong understanding of cryptography, which is essential for securing network communications. The discussion of Diffie-Hellman key exchange and other encryption techniques may be useful for implementing secure network protocols. This may help the Network Security Engineer to protect against unauthorized network access.
Cybersecurity Analyst
A Cybersecurity Analyst monitors and protects an organization's networks and systems from security breaches. This role involves analyzing security data, identifying potential threats, and responding to security incidents. This course helps you build a solid foundation in cryptography and hashing, which are crucial for understanding and mitigating cyber threats. The course content related to cracking cryptographic systems provides valuable insights into attacker techniques. The Cybersecurity Analyst may find the course useful by staying ahead of potential security breaches.
Security Architect
Security Architects design and implement security systems for organizations. This involves assessing security risks, developing security strategies, and ensuring that security measures are integrated into the organization's infrastructure. This course helps develop a broad understanding of cryptography and its applications, allowing them to make informed decisions about security technologies. Understanding the strengths and weaknesses of different cryptographic algorithms, as covered in the course, is crucial for designing robust security architectures. The Security Architect will make sure that security is not an afterthought.
Information Security Analyst
An Information Security Analyst is responsible for protecting an organization's data and systems from unauthorized access and cyber threats. Their role includes tasks such as monitoring security alerts, conducting risk assessments, and implementing security policies. This course helps you develop a strong understanding of cryptography and hashing, which are essential tools for protecting sensitive information. The course content on encryption algorithms helps the Information Security Analyst safeguard data and mitigate potential risks by staying abreast of current trends.
Cryptocurrency Developer
Cryptocurrency Developers create and maintain cryptocurrencies and related technologies. This role requires a deep understanding of cryptography, blockchain technology, and distributed systems. This course is highly relevant because it covers cryptographic hashing and elliptic curve cryptography, which are fundamental to cryptocurrency security. The course's exploration of these topics helps one understand and contribute to the development of secure and efficient cryptocurrencies. The Cryptocurrency Developer will make sure that everything is in tip top shape. This requires an advanced degree.
Blockchain Developer
Blockchain Developers build and maintain decentralized applications using blockchain technology. The role requires knowledge of cryptography, distributed systems, and smart contract development. This course is highly relevant because it covers cryptographic hashing, which is a fundamental concept in blockchain technology. The course's exploration of elliptic curve cryptography, as used in Bitcoin, is particularly valuable for understanding the security mechanisms underlying blockchain systems. The course may help one gain the foundational knowledge needed to excel as a Blockchain Developer.
Reverse Engineer
A Reverse Engineer analyzes software or hardware to understand its functionality, often without access to the source code. This role requires strong analytical skills and a deep understanding of computer architecture and programming. This course helps you develop skills in cryptography and algorithm analysis, which can be applied to reverse engineering cryptographic software. The course's exploration of symmetric and asymmetric cryptosystems may be useful in uncovering hidden functionalities or vulnerabilities in software.
Software Developer
Software Developers design, develop, and test software applications. This role requires strong programming skills and a solid understanding of software development principles. This course helps you add valuable security knowledge to your skillset, which may be useful for developing secure applications. The course's exploration of cryptography and hashing in Python and Java helps one appreciate the importance of secure coding practices. Software Developers find that this helps bring up any security vulnerabilities.
Data Scientist
Data Scientists analyze large datasets to extract insights and inform business decisions. While not always directly related to cryptography, this course may be valuable to Data Scientists working with sensitive data that needs to be protected. Understanding encryption algorithms and hashing techniques, as taught in this course, may help build a system that protects data privacy and comply with data security regulations. The course helps Data Scientist understand the cryptographic side of data protection.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Cryptography and Hashing Fundamentals in Python and Java.
Provides a practical and modern introduction to cryptography. It covers a wide range of topics, including symmetric and asymmetric encryption, hashing, and digital signatures. It is particularly useful for understanding the real-world applications and security considerations of cryptographic algorithms, adding depth to the theoretical concepts covered in the course. This book valuable reference for both beginners and experienced practitioners.
Focuses on the practical aspects of cryptography, emphasizing how to design and implement secure systems. It covers common pitfalls and best practices in cryptographic engineering. It is particularly useful for understanding the real-world challenges of applying cryptographic algorithms, adding breadth to the theoretical concepts covered in the course. This book valuable reference for those interested in building secure applications.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser