This repository contains my work on the cryptopals challenges, a set of programming challenges meant to teach the basics of real-world cryptography.
The bulk of the complexity is implemented in src/bytevector.cpp
and src/Crypto.cpp
, which are a library I wrote to simplify handling strings of bytes in C++ and a basic cryptography library built on top of libssl's AES-ECB implementation, respectively.
The most interesting challenge, in my opinion, is Challenge 17, which involves a padding oracle attack on AES-CBC. You can see my solution here.
After cloning the repository, you can compile the challenges using make. For example, to compile challenge 13's code, you would write:
$ make p13
This will generate the executable p13
in the current directory.
If you want to compile all challenges, just run:
$ make
Finally, to remove executables and intermediate build files, run:
$ make clean