В настоящее время я использую шифрование MD5 для хранения пароля в базе данных. Раньше у нас не было функции сброса пароля. Но теперь мы это реализуем. Поэтому я не могу расшифровать MD5 и отправить пароль пользователю. Но я могу сделать, если он зашифрован в base64. Теперь я немного запутался, что является лучшим методом шифрования.
Я уже сделал проверку на стороне клиента для надежного пароля (например, длина 8 символов, специальные символы и т. Д.).
База 64 не является механизмом шифрования, это схема кодирования. Он легко отменяется, поэтому он не является хорошим выбором для защиты важных данных.
Общий подход для паролей – это хешировать их чем-то вроде MD5, а затем хранить хэш. Когда пользователь снова войдет в систему, введите пароль ввода и сравните его с сохраненным хешем.
Если пользователь забудет свой пароль, вы не сможете сказать ему, что это такое. Вместо этого позвольте ему сбросить его на что-то другое (возможно, что-то, что он может запомнить).
Кроме того, как отмечает @Phil Brown, MD5 не считается сильным механизмом шифрования . SHA-1 лучше подходит для этой задачи.
Базовая кодировка 64 обычно используется для передачи двоичных данных по механизму, который разрешает только текст ASCII.
Base64 не является шифром, он является легко обратимым механизмом кодирования. MD5 является односторонним криптографическим хешем, хотя его использование не рекомендуется, поскольку оно криптографически слабо .
Для ваших нужд вы, вероятно, хотите сохранить хэш пароля (лучше с солью ), возможно, используя SHA-256 или лучше. Когда пользователи забывают свой пароль, вы генерируете случайный одноразовый пароль для них и заставляете их воссоздавать пароль или просто заставлять их делать это после проверки некоторых учетных данных.
Base64 и MD5 не являются методами шифрования . Base64 – это просто способ кодирования символов, который не обеспечивает абсолютно никакой безопасности – он так же хорош, как и хранение пароля в виде обычного текста. MD5 – хеш-функция, что означает, что она односторонняя и не может быть расшифрована.
Хешинг – это, безусловно, путь. MD5 в порядке, но вы должны переключиться на более безопасную функцию, такую как SHA-256.
Что касается функции «забытый пароль», никогда не храните пароль пользователя и не отправляйте обратно им. Вместо этого создайте (случайный) временный пароль для них, чтобы они могли войти и изменить его.
Лучшей практикой является сохранение хэша паролей с использованием MD5, как вы сейчас (или даже лучше SHA256).
Не восстанавливайте пароль. Вместо этого, когда пользователь забывает свой пароль, создайте новый случайный пароль и отправьте его им. Затем они могут входить в систему и устанавливать пароль на то, что они предпочитают. Гораздо безопаснее.