Deter online dictionary attacks - Round 2 (now with a test!)