
Explore cryptography basics from scratch in Python, building from Caesar cipher to substitution and homophonic ciphers, learn their weaknesses, and study simple encryption and decryption attacks.
Learn how the Caesar cipher encrypts and decrypts messages with a 26-letter alphabet, including lowercasing, removing blanks, and brute-forcing the key to recover plaintext.
Create a random k table to perform substitution cipher encryption and decryption in Python, using encrypt letter and decrypt letter functions, and discuss brute force attacks.
Analyze ciphertext with frequency analysis to crack a substitution cipher by comparing one-letter, two-gram, and three-gram frequencies against English, using pandas.
Explore the affine cipher as a linear substitution method, using y=ax+b to encrypt and decrypt text, relating it to substitution and Caesar ciphers.
Explore homophonic substitution, replacing each plaintext letter with multiple ciphertext symbols to flatten frequencies and resist frequency analysis, contrasting it with simple substitution's search space and vulnerability to frequency attacks.
Explore a homophonic cipher using a K table to map each letter to symbols based on its frequency, implemented in Python with random selection and frequency analysis.
Analyze a homophonic cipher by examining ciphertext frequency, bigrams, and language-based mappings to infer symbol-to-letter substitutions.
explains permutation cipher by dividing text into blocks of five and permuting letters with a key to form ciphertext, then decrypts each block, and notes its weakness against frequency analysis.
Explore the hill cipher in Python, including building a square key matrix, ensuring invertibility, and encrypting blocks with matrix multiplication before decrypting with the inverse key.
Implement the vigenere cipher in Python by converting letters to numeric indices, applying a key, and performing encryption and decryption with modular arithmetic to produce ciphertext and plaintext.
Navigate the Kasiski attack by using repeating engrams and their distances to estimate key length, then divide the ciphertext into six subsets and apply frequency analysis on each.
Explore how the Enigma machine uses rotors and a plugboard with a reflector to create a large cipher space, showing rotor stepping and a strong, symmetric cipher.
This is a hands-on cryptography course covering encryption, decryption and cryptoanalysis approaches for historical and classical methods. The most common cryptographic approaches will be mentioned such as shift ciphers, substitution ciphers, permutation ciphers and block ciphers. Everything will be developed from scratch in Python. This course will guide you to see and understand how the most advanced cryptography algorithms derived from these historical algorithm in time.