Jak utworzyć hashowane hasło laravel

Próbuję utworzyć hashowane hasło dla Laravel. Teraz ktoś powiedział mi, aby użyć Laravel hash helper ale wydaje się, że nie mogę go znaleźć lub patrzę w złym kierunku.

Jak utworzyć hashowane hasło laravel? I gdzie?

Edytuj: Wiem co to za Kod, ale nie wiem gdzie i jak go użyć, więc oddaje mi zahaszowane hasło. Jeśli otrzymam hashowane hasło, mogę ręcznie wstawić je do bazy danych

Author: Philip Kirkbride, 2014-04-03

8 answers

Hashowanie hasła za pomocą Bcrypt w Laravel:

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

Spowoduje to utworzenie hashowanego hasła. Możesz użyć go w kontrolerze lub nawet w modelu, na przykład, jeśli użytkownik poda hasło za pomocą Formularza do kontrolera za pomocą metody POST, możesz go zahaszować używając czegoś takiego:

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

Tutaj $hashed będzie zawierać hashowane hasło. Zasadniczo zrobisz to podczas tworzenia / rejestracji nowego użytkownika, więc na przykład, jeśli użytkownik poda dane, takie jak, name, email, username i password itd. używając formularza, następnie przed wstawieniem danych do bazy danych, będziesz hashować hasło po sprawdzeniu poprawności danych. Aby uzyskać więcej informacji, przeczytaj dokumentację .

Update:

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

Więc wstawisz $hashedPassword do bazy danych. Mam nadzieję, że teraz jest jasne i jeśli nadal jesteś zdezorientowany, proponuję przeczytać kilka tutoriali, obejrzeć screeny na laracasts.com i tutsplus.com a także przeczytać książkę na Laravel, jest to darmowy ebook, możesz go pobrać.

Update: ponieważ OP chce ręcznie zaszyfrować hasło za pomocą Laravel Hash BEZ ŻADNEJ klasy lub formy, więc jest to alternatywny sposób użycia artisan tinker z wiersza polecenia:

  1. przejdź do wiersza poleceń/terminala
  2. przejdź do instalacji Laravel (katalogu głównego projektu)
  3. użyj cd <directory name> i naciśnij enter z wiersza polecenia / terminala
  4. następnie napisz php artisan tinker i naciśnij wpisz
  5. następnie napisz echo Hash::make('somestring');
  6. dostaniesz zahaszowane hasło na konsoli, skopiuj je, a potem rób, co chcesz.

Update (Laravel 5.x):

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

 107
Author: The Alpha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-12 06:19:53

Laravel 5 zastosowań bcrypt. Więc ty też możesz to zrobić.

$hashedpassword = bcrypt('plaintextpassword');

Wyjście, z którego można zapisać w polu hasła tabeli bazy danych.

Fn Ref: bcrypt

 12
Author: Rao,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-10 12:47:43

Aby zapisać hasło w bazie danych, wykonaj hash hasła, a następnie zapisz.

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

Aby zweryfikować hasło, Pobierz hasło zapisane na koncie z bazy danych

// $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 
}
 4
Author: Somnath Muluk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-16 16:27:06

Laravel hash zapewnia bezpieczne hashowanie Bcrypt do przechowywania haseł użytkowników.

Podstawowe użycie wymagało dwóch rzeczy:

Najpierw Dołącz fasadę do pliku

use Illuminate\Support\Facades\Hash;

I użyj metody Make do wygenerowania hasła.

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

A gdy chcesz dopasować Hashowany ciąg możesz użyć poniższego kodu:

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

Możesz dowiedzieć się więcej za pomocą poniższego linku do dokumentu Laravel: https://laravel.com/docs/5.5/hashing

 3
Author: Prashant Barve,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-12-26 08:01:01

Możesz użyć:

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

Możesz znaleźć więcej informacji: tutaj

 2
Author: Chris G,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-03 19:21:47

W BcryptHasher.w php możesz znaleźć kod hashowy:

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;
}
 1
Author: hendra1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-08 06:08:39

Jeśli chcesz zrozumieć, jak bardzo działa laravel, możesz przejrzeć pełną klasę na Githubie: https://github.com/illuminate/hashing/blob/master/BcryptHasher.php

Ale zasadniczo są trzy metody PHP zaangażowane w to:

$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 ));

Hashowane hasło jest takie samo jak laravel 5.x bcrypt hasło. Nie trzeba podawać soli i kosztów, będzie przyjmować wartości domyślne.

Te metody zostały zaimplementowane w klasie laravel, ale jeśli chcesz dowiedzieć się więcej proszę przejrzeć oficjalną dokumentację: http://php.net/manual/en/function.password-hash.php

 1
Author: Jathin Prasad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-22 10:39:31

Ok, to jest wyciąg z funkcji make w 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);

Wystarczy skopiować / wkleić go do pliku php i uruchomić.

 -5
Author: Fabián Valencia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-07 06:41:06