Build your own BitTorrent client
Build a BitTorrent client from scratch. Decode bencode, contact trackers and download a real file through the peer-to-peer protocol.
Go · Python · Java
Build SHA-256 and HMAC from scratch. Implement rotations, padding and compression blocks, then sign and verify messages without a crypto library.
Build it in your language
The tester treats your program as a black box: any language works. These are just the most convenient ones for this project.
A cryptographic hash is a function that shows up everywhere — passwords, signatures, blockchains, file integrity — and that almost nobody has seen from the inside. Inside, it's rotations and additions, nothing more.
You'll implement SHA-256 from the padding to the compression block, check your output against the official test vectors, and use it to build HMAC and sign real tokens.
7 stages across 3 phases. Every stage comes with its guide and its tests: you move on when they pass.
Padding, length in bits, and splitting into 512-bit blocks.
Message schedule, the 64 rounds, and validation against the NIST vectors.
HMAC-SHA256, and signing and verifying tokens in constant time.
Build a BitTorrent client from scratch. Decode bencode, contact trackers and download a real file through the peer-to-peer protocol.
Go · Python · Java
Build your own Git from scratch. Store blobs, trees and commits to understand content-addressed objects and how version control works.
Go · Python · Rust