如何创建laravel哈希密码

问题描述 投票:67回答:10

我正在尝试为Laravel创建一个哈希密码。现在有人告诉我使用Laravel哈希助手,但我似乎无法找到它,或者我正朝错误的方向看。

如何创建laravel哈希密码?在哪里?

编辑:我知道代码是什么,但我不知道在哪里以及如何使用它,所以它给我回哈希密码。如果我得到哈希密码,那么我可以手动将其插入数据库

php security laravel hash passwords
10个回答
146
投票

Laravel中使用Bcrypt散列密码:

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

这将创建一个哈希密码。您可以在控制器中甚至在模型中使用它,例如,如果用户使用POST方法使用表单向控制器提交密码,那么您可以使用以下内容对其进行散列:

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

在这里,$hashed将包含哈希密码。基本上,您在创建/注册新用户时会这样做,因此,例如,如果用户使用表单提交nameemailusernamepassword等详细信息,那么在将数据插入数据库之前,验证数据后会对密码进行哈希处理。有关更多信息,请访问read the documentation

更新:

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

所以,你会将$hashedPassword插入数据库。希望,现在很清楚,如果你仍然困惑,那么我建议你阅读一些教程,观看laracasts.comtutsplus.com上的一些屏幕演员,还读一本关于Laravelthis is a free ebook的书,你可以下载它。

更新:由于OP想要使用Laravel Hash手动加密密码而没有任何类或形式,所以这是在命令提示符下使用artisan tinker的另一种方法:

  1. 转到命令提示符/终端
  2. 导航到Laravel安装(您项目的根目录)
  3. 使用cd <directory name>并从命令提示符/终端按Enter键
  4. 然后写php artisan tinker并按回车键
  5. 然后写echo Hash::make('somestring');
  6. 你将在控制台上获得一个哈希密码,复制它,然后做你想做的任何事情。

更新(Laravel 5.x):

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


-5
投票

好的,这是hash.php中make函数的摘录

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

只需将其复制/粘贴到php文件中即可运行。


14
投票

Laravel 5使用bcrypt。所以,你也可以这样做。

$hashedpassword = bcrypt('plaintextpassword');

您可以将其输出保存到数据库表的密码字段中。

Fn参考:bcrypt


6
投票

Laravel Hash外观提供用于存储用户密码的安全Bcrypt哈希。

基本用法需要两件事:

首先在您的文件中包含Facade

use Illuminate\Support\Facades\Hash;

并使用Make方法生成密码。

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

如果要匹配Hashed字符串,可以使用以下代码:

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

您可以通过下面的Laravel文档链接了解更多信息:Hashing:https://laravel.com/docs/5.5/hashing


4
投票

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 
}

2
投票

您可以使用以下内容:

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

您可以找到更多信息:here


2
投票

如果你想了解laravel究竟是如何工作的,你可以查看Github上的完整课程:qazxsw poi

但基本上有三种PHP方法:

https://github.com/illuminate/hashing/blob/master/BcryptHasher.php

散列密码与laravel 5.x bcrypt密码相同。无需给出盐和成本,它将采用其默认值。

这些方法已在laravel类中实现,但如果您想了解更多信息,请查看官方文档:$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 ));


1
投票

在BcryptHasher.php中,您可以找到哈希码:

http://php.net/manual/en/function.password-hash.php

0
投票

比较laravel和流明中的密码:

这可能是bcrypt函数不能用于php7然后你可以根据你的要求在laravel和流明中使用下面的代码:

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;
}

我希望,这个帮助会让你开心:)


0
投票
use Illuminate\Support\Facades\Hash;

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

eg- $ plain-text ='text'; $散列文本=哈希::使(“文”);

© www.soinside.com 2019 - 2024. All rights reserved.