переход от md5 к sha1, соление

мой алгоритм выглядит так:

$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 ()). Вы не можете переработать долгую соль в любое время на этой стороне никогда. Соль для каждого пользователя может заставить вас чувствовать себя лучше, если вы не уверены в безопасности компьютера, но не прибегают к какой-либо другой пользе.