Complete · Technology · Security
Cryptopals
Working through the Cryptopals crypto challenges in PHP, one per post: encodings, XOR, frequency analysis and breaking real ciphers, with value objects and tests along the way.
- 01 The Cryptopals challenges Starting today I kick off a series on the cryptopals crypto challenges, with my implementations in PHP. Feel free to join in the fun! Feb 14, 2022
- 02 Cryptopals: Set 1 – challenge 1 Challenge 1 in the cryptopals suite is to juggle between Base64 and Hex encoding of byte strings. Let's do just that, with value objects! Feb 15, 2022
- 03 Cryptopals: Set 1 – challenge 2 Building on our cryptopals encoding work last time, let's introduce byte-based XOR operations. Feb 16, 2022
- 04 Cryptopals: Set 1 – challenge 3 Next up in our Cryptopals walkthrough is some frequency analysis against simple cryptographic keys. Let's have some fun! Feb 17, 2022
- 05 Cryptopals: Set 1 – challenge 4 Now that we know how to crack a single-byte XOR cipher, let's expand and crack even more through Cryptopals' next challenge. Feb 18, 2022
- 06 Cryptopals: Set 1 – challenge 5 Breaking encryption is fun. Building an encryption cipher is even more so! Let's continue our Cryptopals journey with XOR. Feb 19, 2022
- 07 Cryptopals: Set 1 – challenge 6 A return to Cryptopals means we get to break the repeating-key cipher we were working with before. Breaking crypto is fun! Mar 12, 2022
- 08 Cryptopals: Set 1 – challenge 7 Next up with Cryptopals is a challenge to decrypt AES in ECB mode. This is relatively easy in PHP! Mar 13, 2022
- 09 Cryptopals: Set 1 – challenge 8 The final Cryptopals challenge in set 1 involves detecting AES when used in ECB mode. It will become a handy utility later on … Mar 14, 2022
Other series
Basic cryptography
Three short lessons in how encryption works, from the Caesar and Vigenère ciphers to the Diffie-Hellman key exchange that lets two strangers agree on a secret over an open line.
3 parts
Complete
PHP-Native AI Tooling
Local AI for PHP developers, built from the ground up: what embeddings are, semantic search and RAG over your own data, and three native extensions (ext-infer, ext-turbovec, ext-whisper) that run models inside the PHP process. No Python, no remote API.
10 of 12
In progress
The Great Migration
In 2024 I moved my blog, a secrets service and a Mastodon server out of the cloud and onto a Linux box in my home office. How I configured the server, moved each service and kept it all off the open internet.
4 parts
Complete
Cracking the Uncrackable
A client once paid me in Bitcoin and I lost the wallet. So I bought a stranger's forgotten, password-locked one instead. Five posts on how wallet recovery works, from password guessing to Hashcat.
5 parts
Complete