challenges from http://cryptopals.com/