Laravel에 대한 해시 된 암호를 만들려고합니다. 이제 누군가가 Laravel 해시 도우미를 사용하라고했지만 찾을 수 없거나 잘못된 방향을 찾고 있습니다.
Laravel 해시 된 비밀번호는 어떻게 만듭니 까? 그리고 어디?
편집 : 코드가 무엇인지 알고 있지만 어디서 어떻게 사용하는지 모르기 때문에 해시 된 암호를 다시 제공합니다. 해시 된 암호를 받으면 데이터베이스에 수동으로 삽입 할 수 있습니다.
Laravel에 대한 해시 된 암호를 만들려고합니다. 이제 누군가가 Laravel 해시 도우미를 사용하라고했지만 찾을 수 없거나 잘못된 방향을 찾고 있습니다.
Laravel 해시 된 비밀번호는 어떻게 만듭니 까? 그리고 어디?
편집 : 코드가 무엇인지 알고 있지만 어디서 어떻게 사용하는지 모르기 때문에 해시 된 암호를 다시 제공합니다. 해시 된 암호를 받으면 데이터베이스에 수동으로 삽입 할 수 있습니다.
php artisan tinker
. 예 :echo Hash::make('yourpassword')
답변:
Bcrypt를 사용하여 암호 해싱 Laravel
:
$password = Hash::make('yourpassword');
해시 된 암호가 생성됩니다. 예를 들어 사용자가 양식을 사용하여 POST
메서드를 사용하여 컨트롤러에 암호를 제출하면 다음과 같이 해시 할 수 있습니다.
$password = Input::get('passwordformfield'); // password is form field
$hashed = Hash::make($password);
여기 $hashed
에는 해시 된 암호가 포함됩니다. 예를 들어, 그래서, 새로운 사용자를 등록 / 생성 할 때 사용자을 제출이 같은 사항 경우 기본적으로, 당신은 그것을 할 것이다 name
, email
, username
과 password
등의 양식을 사용하여, 당신하기 전에 데이터베이스에 데이터를 삽입, 당신은 해시 것 데이터를 확인한 후 암호. 자세한 내용 은 설명서 를 참조하십시오 .
최신 정보:
$password = 'JohnDoe';
$hashedPassword = Hash::make($password);
echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy
따라서 $hashedPassword
데이터베이스에 삽입 합니다. 희망은, 지금은 분명 당신이 다음 혼동 여전히 경우 난 당신이 몇 가지 자습서를 읽는 몇 가지 스크린 캐스트 보는 것이 좋습니다 laracasts.com 및 tutsplus.com을 도에 관한 책을 읽고 Laravel
, 이 무료 전자 책입니다 , 당신이 그것을 다운로드 할 수 있습니다.
업데이트 : 클래스 나 양식없이 OP
Laravel Hash
을 사용하여 수동으로 암호를 암호화 하기를 원 하므로 artisan tinker
명령 프롬프트에서 사용하는 다른 방법입니다 .
Laravel
설치 (프로젝트의 루트 디렉토리)cd <directory name>
명령 프롬프트 / 터미널에서 사용 하고 Enter 키를 누릅니다.php artisan tinker
Enter 키를 누릅니다.echo Hash::make('somestring');
// Also one can use bcrypt
$password = bcrypt('JohnDoe');
db
를 암호화해야하므로 일반 암호를 사용하여 암호화 Hash::make('passwordstring');
한 다음이 해시 된 암호를 데이터베이스에 저장합니다.
라 라벨 5는 bcrypt
. 그래서 당신도 할 수 있습니다.
$hashedpassword = bcrypt('plaintextpassword');
데이터베이스 테이블의 비밀번호 필드에 저장할 수있는 출력.
Fn 참조 : bcrypt
check
: 방법 if (Hash::check('secret', $hashedPassword)) { // The passwords match... }
참조 : laravel.com/docs/5.1/hashing의 ) 당신을 도움이 경우 음주 대답을 upvote에하는 것을 잊지 : 편집
Laravel Hash 파사드는 사용자 암호를 저장하기위한 안전한 Bcrypt 해싱을 제공합니다.
기본 사용에는 두 가지가 필요합니다.
먼저 파일에 Facade를 포함합니다.
use Illuminate\Support\Facades\Hash;
Make
방법을 사용 하여 암호를 생성하십시오.
$hashedPassword = Hash::make($request->newPassword);
Hashed 문자열과 일치 시키려면 아래 코드를 사용할 수 있습니다.
Hash::check($request->newPasswordAtLogin, $hashedPassword)
Hashing에 대한 아래의 Laravel 문서 링크에서 자세히 알아볼 수 있습니다. https://laravel.com/docs/5.5/hashing
$password = Input::get('password_from_user');
$hashed = Hash::make($password); // save $hashed value
// $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
}
laravel이 어떻게 작동하는지 이해하려면 Github에서 전체 클래스를 검토 할 수 있습니다. https://github.com/illuminate/hashing/blob/master/BcryptHasher.php
그러나 기본적으로 여기에는 세 가지 PHP 메서드가 있습니다.
$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 ));
해시 된 비밀번호는 laravel 5.x bcrypt 비밀번호와 동일합니다. 소금과 비용을 줄 필요가 없으며 기본값을 사용합니다.
이러한 메소드는 laravel 클래스에서 구현되었지만 더 자세히 알아 보려면 공식 문서를 검토하십시오. http://php.net/manual/en/function.password-hash.php
BcryptHasher.php에서 해시 코드를 찾을 수 있습니다.
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;
}
use Illuminate\Support\Facades\Hash;
if(Hash::check($plain-text,$hashed-text))
{
return true;
}
else
{
return false;
}
예 : $ plain-text = '텍스트'; $ hashed-text = 해시 :: make ( 'text');
laravel과 lumen의 비밀번호 비교 :
이것은 bcrypt 기능이 php7에서 작동하지 않을 수 있으며 요구 사항에 따라 laravel 및 lumen에서 아래 코드를 사용할 수 있습니다.
use Illuminate\Support\Facades\Hash;
$test = app('hash')->make("test");
if (Hash::check('test', $test)) {
echo "matched";
} else {
echo "no matched";
}
이 도움이 당신을 행복하게 해주길 바랍니다 :)
좋아요, 이것은 hash.php의 make 함수에서 발췌 한 것입니다.
$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);
PHP 파일에 복사 / 붙여 넣기 만하면됩니다.