Кстати, про хранение паролей, не касаясь обсуждаемого шифра. Когда-то очень давно в комментариях на Хабрхабре увидел такую идею: генерируем пару RSA-ключей, закрытый ключ уничтожаем, а открытым потом шифруем пароли пользователей, когда создаём им учётки. В дальнейшем сравниваем этот шифротекст с тем, который вычислим при попытке пользователя войти на сервер под своим именем. То есть, шифротекст воспринимается как хеш, а шифр RSA - как хеш-функция, у которой есть несколько преимуществ: низкая скорость выполнения и отсутствие предварительно вычисленных таблиц. Правда, теперь, как я понял, существуют специальные хеш-функции, в алгоритме которых есть специальный cost-параметр, регулирующий скорость их выполнения, потому полезность этого асимметричного способа уже не очевидна.