Matasano crypto challenge (cryptopals.com) solutions