Тогда уж лучше не дату, в время в миллисекундах пропустить через хеш (читай, преобразовать в строку

) и сконкатенировать/перемешать с паролем.
А про втрое -- честно не знаю, как это можно реализовать на C#. Но на C++ я бы перехватывал сообщения textBox и проверял каждый символ.
PS. А датчик случайных чисел инициализируется?