Skip to content

Latest commit

 

History

History
38 lines (22 loc) · 2.25 KB

README.md

File metadata and controls

38 lines (22 loc) · 2.25 KB

Programming Assignments for Cryptography I by Stanford University

The programming assignments for Coursera Cryptography I by Stanford University are optional, and are only now being worked on (WIP) after I have finished the course. I'll be using Rust to work on these.

Let us see what goes wrong when a stream cipher key is used more than once. Given ciphertexts encrypted with the same stream cipher key, our goal is to decrypt the target ciphertext to get the secret message.

Implement two encryption/decryption systems, one using AES in CBC mode and another using AES in counter mode (CTR). Given pairs of AES key and ciphertext, our goal is to recover the plaintext.

Our goal in this project is to build a file authentication system that lets browsers authenticate and play video chunks as they are downloaded without having to wait for the entire file.

Let's experiment with a padding oracle attack against a toy website. Knowing that the website is vulnerable to a CBC padding oracle attack, our goal is to decrypt the ciphertext in the sample intercepted URL.

Our goal is to write a program to compute discrete log modulo a prime p. In this project, we'll implement an algorithm that runs in time roughly √2^40 = 2^20 using a meet-in-the-middle attack.

Week 6: RSA Problem

Our goal in this project is to break RSA when the public modulus N is generated incorrectly. If the primes p and q are close to each other, N = pq can be easily factored.

Acknowledgements

The Coursera Cryptography I is offered by Stanford University and taught by Professor Dan Boneh. Only shortened/paraphrased description of the programming assignments are provided in this repository. Please visit the online course for the original and full description of the weekly programming assignments.