Ви можете використовувати декілька хешів у своїй базі даних, для цього потрібно лише трохи додаткових зусиль. Це варто того, хоча, якщо ви вважаєте, що є найменший шанс, що вам знадобиться підтримка додаткових форматів у майбутньому. Я часто використовую записи пароля, такі як
{hashId} $ {соль} $ {хешований пароль}
де "hashId" - це просто деяке число, яке я використовую внутрішньо, щоб визнати, що, наприклад, я використовую SHA1 з певним шаблоном хешування; "сіль" - це випадкова сіль, кодована базою64; а "хешований пароль" - це хеш, кодований base64. Якщо вам потрібно перенести хеші, ви можете перехопити людей зі старим форматом паролів і змусити їх змінити пароль наступного разу, коли вони увійдуть в систему.
Як зазначали інші, ви хочете бути обережними з хешами, оскільки легко зробити те, що насправді не є безпечним, наприклад, H (сіль, пароль) набагато слабкіше H (пароль, сіль), але в той же час ви хочете збалансувати зусилля, докладені для цього, зі значенням вмісту сайту. Я часто буду використовувати H (H (пароль, сіль), пароль).
Нарешті, вартість використання паролів, кодованих base64, є незначною порівняно з перевагами можливості використання різних інструментів, які очікують текстових даних. Так, вони повинні бути більш гнучкими, але чи готові ви сказати своєму начальнику, що він не може користуватися своїм улюбленим стороннім інструментом, оскільки ви хочете заощадити кілька байтів на запис? :-)
Відредаговано, щоб додати ще один коментар: якби я навмисно запропонував використовувати алгоритм, який спалював би навіть 1/10 секунди хешування кожного пароля, мені пощастило б просто посміятися з кабінету мого боса. (Не так пощастило? Він би щось записав, щоб обговорити на моєму наступному щорічному огляді.) Спалити цей час не проблема, коли у вас десятки, а то й сотні користувачів. Якщо ви натискаєте на 100 тисяч користувачів, ви, як правило, одночасно входите в систему декількох людей. Вам потрібно щось швидке і сильне, а не повільне і сильне. "А як щодо інформації про кредитну картку?" в найкращому випадку химерний, оскільки збережена інформація про кредитну карту не повинна знаходитись поблизу вашої звичайної бази даних і в будь-якому випадку буде зашифрована додатком, а не окремими користувачами.