Я работаю над системой, которая хеширует пароли пользователей с помощью MD5 (без соли). Я хочу более надежно хранить пароли, используя SHA-512 и соль.
Хотя это достаточно легко реализовать для будущих паролей, я хотел бы также модифицировать существующие хешированные пароли MD5, желательно, не заставляя всех пользователей менять свои пароли. Моя идея состоит в том, чтобы просто использовать SHA-512 и соответствующую соль для хеширования существующего хеша MD5. Затем я могу установить какой-нибудь флаг в базе данных, который указывает, какие пароли были хешированы из обычного текста, а какие - из хеша MD5. Или я мог бы просто попробовать оба при аутентификации пользователей. Или даже просто хешируйте новые пароли с помощью MD5, а затем SHA-512 / salt, чтобы их можно было обрабатывать так же, как и старые пароли.
С программной точки зрения я не думаю, что это будет проблемой, но я недостаточно знаю о шифровании / хешировании, чтобы знать, не ухудшаю ли я качество хеша каким-либо образом, применяя хеш SHA-512 / соли к пароль, который уже был хеширован MD5. Моим первым инстинктом было то, что это было бы даже сильнее, очень легкое растяжение клавиш.
Мой второй инстинкт состоит в том, что я действительно не понимаю, о чем говорю, поэтому мне лучше посоветоваться. Есть предположения?
MD5(salt + password)
практически эквивалентноSHA512(salt + password)
). Функции хеширования общего назначения, такие как MD5 и семейство SHA, не созданы для хранения паролей. Используйте bcrypt. - person NullUserException   schedule 31.10.2012