мой алгоритм выглядит так:
$new_password = sha1($salt . $password . $email);
он работает хорошо, но я пытаюсь перейти на sha1, так как ive слышал его лучше, но он не будет работать. Почему это?
регистр:
//generate a strong unique salt $salt = uniqid(mt_rand()); $new_password = sha1($salt . $password . $email);
и затем я перефразирую его, когда я вхожу в систему
Вы храните соль с хешированным паролем? При проверке хэша вам нужно использовать ту же соль – каждый пользователь должен иметь свой адрес электронной почты, соль и хэш.
Да, sha1 – лучший хеш, чем md5. В большинстве случаев тo, md5 достаточно хорош … Действительно, как «небезопасно» ваш сайт определяется гораздо больше другими факторами.
Вам нужна постоянная строка для вашей соли, например
$salt = "iodized sea salt"
EDIT: комментаторы и downvoters здесь, похоже, не понимают понятие соли. Использование постоянной соли, конечно же, не победит цель соли, которая должна сделать ваш выбор алгоритма хэширования («SHA1 с такой-то солью») частной. Эта соль может быть длинной, и ее выбор имеет больше энтропии, чем, скажем, uniqid (mt_rand ()). Вы не можете переработать долгую соль в любое время на этой стороне никогда. Соль для каждого пользователя может заставить вас чувствовать себя лучше, если вы не уверены в безопасности компьютера, но не прибегают к какой-либо другой пользе.