Hashing / Checksums
Encryption/Decryption Keys
MD5 File Hash Example

Introduction

A checksum is intended to verify (check) the integrity of data and identify data-transmission errors, while a hash is designed to create a unique digital fingerprint of the data. A checksum protects against accidental changes. A cryptographic hash protects against an attacker.
From: Explain the differences as well as the similarities between Checksum vs Hash?

I worked on a project that sent a large amount of data across the net. We implemented checksums to very the integrity of the transmitted data. Surprisingly, errors happened more often than we expected.

Project #1

Create a program to demonstrate the checksum and hash of a string. Create a program to demonstrate the checksum and hash of a file.

Create interactive programs that let the user enter a string or select a file.

Test by modifying the data. What happened?

What about binary (non-text) data?

Project #2

Implement the project "a simple messaging service" with a checksum capability. Implement the project "a simple messaging service" with a hashing capability.

Test by modifying messages. What happened? How should the program react? What should happen if the communications are automatic and no humans are involved? (Send an email?)

Project #3

How do hashes relate to digital signatures?

Links

Implementing Checksum using Python
Python Code Examples for calculate checksum
0:01 / 3:30 Python 3 Create md5 Checksum of String (YouTube)
Python Program to Find Hash of File
How to Hash in Python
An introduction to hashing and checksums in Linux