У меня есть идея, отголоски которой я встречал на Хабре в разделе шифрования. Идея такая. Создать закрытую форму, доступную только для клиентов, где клиент вводит имя пользователя, и ему автоматом генерируется пароль, который генерируется из имени пользователя. Например, он вводит pavel. Строка пропускается через пару алгоритмов и выдается ему сильный пароль типа xA7$6!v1. Если клиент потеряет пароль — сгенерит заново.
Насколько безопасна такая идея? Кроме того, что злоумышленники могли бы получить алгоритмы генерации пароля из имени, насколько велика опасность удачного получения имени из кода? Стоит ле делать нечто подобное?
Почитайте алгоритм хэширования SHA-1. Вам нужно сделать что-то похожее и более легковесное. Главное, чтобы ваша функция генерации паролей не обращалась.
Хэш-функция обращается, если из хэш-образа можно восстановить исходный текст.
Кстати, в Windows пароли не хранятся физически. Когда вы указываете новый пароль система просчитывает хэш-образ и сохраняет его у себя. Когда вы вводите пароль для авторизации система считает хэш для введенного пароля и сравнивает со своим. Если одинаковые — то пароль правильный. И, если злоумышленник сломает место хранения паролей, то кроме хэш-образа он ничего не найдет. А из хэш-образа пароль восстановить невозможно, даже если тот в десятки раз больше самого пароля. Интересная, в общем, штука.
Не только в Windows, подобная схема применяется повсеместно.
Имея хэш пароль восстановить невозможно, но можно подобрать фразу, которая будет иметь такой же хэш. Если пароль меньше 10 символов длиной, то на современных вычислительных мощностях это не так уж долго.
Да, я думал использовать md5. Но комментаторы нашли у идеи другие существенные недостатки, которые делают идею далеко не такой хорошей, как она мне казалась сначала.