There's a software security company called Matasano that released a list of cryptography challenges a few weeks ago.
The point is to teach cryptography and common attacks to programmers by implementing those attacks.
It's a blast. I don't think I've ever had that much fun programming ever before.
The challenges start easy and they build on each other.
They get hard quickly, but they're never too hard.
The instructions given are just enough to make you think hard and bash your head on a desk, but still detailed enough so that people don't give up.
Many of them make you break some kind of encryption and the satisfaction to decrypt the plaintext one byte at a time is great.
It requires no initial knowledge of crypto and 9th grade math is enough.
The programming skill required is slightly above being able to write loops and ifs.
They'll make you a better programmer one challenge at a time and the attacks are really neat, most of them actually work in the wild because people use flawed software.
There's 48 of them, to get the first set of 8, send a mail to cryptopals at matasano.com. Just say you want in.
After you've completed the first set, you reply with the answers and your source code to get the next set.
Less than 20 people have completed them all so far, over 4000 have requested the first set. 300 only have completed the first set.
Anyway, give them a try, you won't regret it. They're addictive. And really fun. And clever. And neat. I'm at #19 right now.