How to create a laravel hashed password

PhpSecurityLaravelHashPasswords

Php Problem Overview


I am trying to create an hashed password for Laravel. Now someone told me to use Laravel hash helper but I can't seem to find it or I'm looking in the wrong direction.

How do I create a laravel hashed password? And where?

Edit: I know what the code is but I don't know where and how to use it so it gives me back the hashed password. If I get the hashed password then I can manually insert it into the database

Php Solutions


Solution 1 - Php

Hashing A Password Using Bcrypt in Laravel:

$password = Hash::make('yourpassword');

This will create a hashed password. You may use it in your controller or even in a model, for example, if a user submits a password using a form to your controller using POST method then you may hash it using something like this:

$password = Input::get('passwordformfield'); // password is form field
$hashed = Hash::make($password);

Here, $hashed will contain the hashed password. Basically, you'll do it when creating/registering a new user, so, for example, if a user submits details such as, name, email, username and password etc using a form, then before you insert the data into database, you'll hash the password after validating the data. For more information, read the documentation.

Update:

$password = 'JohnDoe';
$hashedPassword = Hash::make($password);
echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy

So, you'll insert the $hashedPassword into database. Hope, it's clear now and if still you are confused then i suggest you to read some tutorials, watch some screen casts on laracasts.com and tutsplus.com and also read a book on Laravel, this is a free ebook, you may download it.

Update: Since OP wants to manually encrypt password using Laravel Hash without any class or form so this is an alternative way using artisan tinker from command prompt:

  1. Go to your command prompt/terminal
  2. Navigate to the Laravel installation (your project's root directory)
  3. Use cd <directory name> and press enter from command prompt/terminal
  4. Then write php artisan tinker and press enter
  5. Then write echo Hash::make('somestring');
  6. You'll get a hashed password on the console, copy it and then do whatever you want to do.

Update (Laravel 5.x):

// Also one can use bcrypt
$password = bcrypt('JohnDoe');

Solution 2 - Php

Laravel 5 uses bcrypt. So, you can do this as well.

$hashedpassword = bcrypt('plaintextpassword');

output of which you can save to your database table's password field.

Fn Ref: bcrypt

Solution 3 - Php

The Laravel Hash facade provides secure Bcrypt hashing for storing user passwords.

Basic usage required two things:

First include the Facade in your file

use Illuminate\Support\Facades\Hash;

and use Make Method to generate password.

$hashedPassword = Hash::make($request->newPassword);

and when you want to match the Hashed string you can use the below code:

Hash::check($request->newPasswordAtLogin, $hashedPassword)

You can learn more with the Laravel document link below for Hashing: https://laravel.com/docs/5.5/hashing

Solution 4 - Php

#To store password in database, make hash of password and then save.

$password = Input::get('password_from_user'); 
$hashed = Hash::make($password); // save $hashed value

#To verify password, get password stored of account from database

// $user is database object
// $inputs is Input from user
if( \Illuminate\Support\Facades\Hash::check( $inputs['password'], $user['password']) == false) {
  // Password is not matching 
} else {
  // Password is matching 
}

Solution 5 - Php

I know your pain bro. You just need the password Hash to replace the password column field in the database. You can get it easily from laravel tinker. On any laravel project command line type:

❯ php artisan tinker
Psy Shell v0.9.12 (PHP 7.4.27 — cli) by Justin Hileman
>>> echo Hash::make('123456');
$2y$10$JHK.2MTc9ORMmmlqoF.gg.SwDLnevVSj1oreHParu5PvcPEDOWqe6

then copy the hashed pass for your use case.

Solution 6 - Php

If you want to understand how excatly laravel works you can review the complete class on Github: https://github.com/illuminate/hashing/blob/master/BcryptHasher.php

But basically there are Three PHP methods involved on that:

$pasword = 'user-password';
// To create a valid password out of laravel Try out!
$cost=10; // Default cost
$password = password_hash($pasword, PASSWORD_BCRYPT, ['cost' => $cost]);

// To validate the password you can use
$hash = '$2y$10$NhRNj6QF.Bo6ePSRsClYD.4zHFyoQr/WOdcESjIuRsluN1DvzqSHm';

if (password_verify($pasword, $hash)) {
   echo 'Password is valid!';
} else {
   echo 'Invalid password.';
}

//Finally if you have a $hash but you want to know the information about that hash. 
print_r( password_get_info( $password_hash ));

The hashed password is same as laravel 5.x bcrypt password. No need to give salt and cost, it will take its default values.

Those methods has been implemented in the laravel class, but if you want to learn more please review the official documentation: http://php.net/manual/en/function.password-hash.php

Solution 7 - Php

Here is the solution:

use Illuminate\Support\Facades\Hash;    
$password = request('password'); // get the value of password field
$hashed = Hash::make($password); // encrypt the password

N.B: Use 1st line code at the very beginning in your controller. Last but not the least, use the rest two lines of code inside the function of your controller where you want to manipulate with data after the from is submitted. Happy coding :)

Solution 8 - Php

You can use the following:

$hashed_password = Hash::make('Your Unhashed Password');

You can find more information: here

Solution 9 - Php

use Illuminate\Support\Facades\Hash;

You can use to hashing password => Hash::make('yourpassword');

You can use checking password => Hash::check($password, $user->password);

Solution 10 - Php

In the BcryptHasher.php you can find the hash code:

public function make($value, array $options = array())
{
	$cost = isset($options['rounds']) ? $options['rounds'] : $this->rounds;

	$hash = password_hash($value, PASSWORD_BCRYPT, array('cost' => $cost));
            
            $hash = password_hash($value, PASSWORD_BCRYPT, array('cost' => $cost));
            echo $value.' '.PASSWORD_BCRYPT.' '.$cost.' ';
            echo $hash;die();
	if ($hash === false)
	{
		throw new RuntimeException("Bcrypt hashing not supported.");
	}

	return $hash;
}

Solution 11 - Php

use Illuminate\Support\Facades\Hash;
if(Hash::check($plain-text,$hashed-text))
    {
       return true;
    }
    else
    {
        return false;
    }

eg- $plain-text = 'text'; $hashed-text=Hash::make('text');

Solution 12 - Php

Create a function

    
    public function bcryptGenerator($password)
    {
        return \bcrypt($password);
    }

Call the function

bcryptGenerator(123456);
// password = 123456

Solution 13 - Php

Compare password in laravel and lumen:

This may be possible that bcrypt function does not work with php7 then you can use below code in laravel and lumen as per your requirements:

use Illuminate\Support\Facades\Hash;

$test = app('hash')->make("test");
if (Hash::check('test', $test)) {
   echo "matched";
} else {
   echo "no matched";
}

I hope, this help will make you happy :)

Solution 14 - Php

 $data->password = Hash::make(($request->password));  //Password 
  Encripted  

//Login code

if ($data = AddEmployee::where('name', $request->name)->first()) {
        $pass = Hash::check($request->password, $data->password);
        if ($pass) {
            echo "sucess";
        } else {
            echo "Password Not Valid";
        }
    } else {
        echo "Username Not Valid" . "<br>";
    }

Solution 15 - Php

In the Controller which is used to insert the password, just use 'use Hash;'.

Solution 16 - Php

ok, this is a extract from the make function in hash.php

	$work = str_pad(8, 2, '0', STR_PAD_LEFT);

	// Bcrypt expects the salt to be 22 base64 encoded characters including
	// dots and slashes. We will get rid of the plus signs included in the
	// base64 data and replace them with dots.
	if (function_exists('openssl_random_pseudo_bytes'))
	{
		$salt = openssl_random_pseudo_bytes(16);
	}
	else
	{
		$salt = Str::random(40);
	}

	$salt = substr(strtr(base64_encode($salt), '+', '.'), 0 , 22);
	
	echo crypt('yourpassword', '$2a$'.$work.'$'.$salt);

Just copy/paste it into a php file and run it.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionGrahamView Question on Stackoverflow
Solution 1 - PhpThe AlphaView Answer on Stackoverflow
Solution 2 - PhpNagendra RaoView Answer on Stackoverflow
Solution 3 - PhpPrashant BarveView Answer on Stackoverflow
Solution 4 - PhpSomnath MulukView Answer on Stackoverflow
Solution 5 - PhpZubayer HossainView Answer on Stackoverflow
Solution 6 - PhpJathin PrasadView Answer on Stackoverflow
Solution 7 - PhpRashed RahatView Answer on Stackoverflow
Solution 8 - PhpChris GView Answer on Stackoverflow
Solution 9 - Phpuser10478041View Answer on Stackoverflow
Solution 10 - Phphendra1View Answer on Stackoverflow
Solution 11 - PhpDharmendra PatelView Answer on Stackoverflow
Solution 12 - PhpMd. Saifur RahmanView Answer on Stackoverflow
Solution 13 - PhpKamleshView Answer on Stackoverflow
Solution 14 - PhpAxay PatanvadiyaView Answer on Stackoverflow
Solution 15 - PhpJacob MarsayView Answer on Stackoverflow
Solution 16 - PhpFabián ValenciaView Answer on Stackoverflow