Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

password_hash returns different value every time

Tags:

I'm making a login system, and I want to hash the passwords to make them more secure, but it returns a different hash every time, and can't even be verified using password_verify(), here is my code:

$password = password_hash($password4, PASSWORD_DEFAULT); 

and here is my code for verifying:

if(password_verify($password4, $dbpassword)) 
like image 963
ItzBenteThePig Avatar asked Oct 13 '15 17:10

ItzBenteThePig


1 Answers

So let's take it one part at a time

but it returns a different hash every time

That's the idea. password_hash is designed to generate a random salt every time. This means you have to break each hash individually instead of guessing one salt used for everything and having a huge leg up.

There's no need to MD5 or do any other hashing. If you want to raise the security of password_hash you pass a higher cost (default cost is 10)

$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]); 

As to verify

if(password_verify($password4, $dbpassword)) 

So $password4 should be your unhashed password and $dbpassword should be the hash you've stored in your database

like image 197
Machavity Avatar answered Oct 19 '22 07:10

Machavity