如何创build一个laravel哈希密码
我正在尝试为Laravel创build一个哈希密码。 现在有人告诉我使用Laravel哈希帮助器,但我似乎无法find它,或者我正在寻找错误的方向。
如何创build一个laravel哈希密码? 哪里?
编辑:我知道代码是什么,但我不知道在哪里以及如何使用它,所以它给我回散列密码。 如果我得到散列密码,那么我可以手动将其插入到数据库中
在Laravel
使用Bcrypt散列密码:
$password = Hash::make('yourpassword');
这将创build一个哈希密码。 你可以在你的控制器或模型中使用它,例如,如果用户使用POST
方法使用表单向你的控制器提交一个密码,那么你可以使用类似下面的方法对它进行哈希处理:
$password = Input::get('passwordformfield'); // password is form field $hashed = Hash::make($password);
在这里, $hashed
将包含哈希密码。 基本上,在创build/注册一个新用户时,你会这样做,例如,如果用户使用表单提交详细信息,如name
, email
, username
和password
等,那么在将数据插入数据库之前,在validation数据之后,将散列密码。 有关更多信息,请阅读文档 。
更新:
$password = 'JohnDoe'; $hashedPassword = Hash::make($password); echo $hashedPassword; // $2y$10$jSAr/RwmjhwioDlJErOk9OQEO7huLz9O6Iuf/udyGbHPiTNuB3Iuy
所以,你将$hashedPassword
插入数据库。 希望,现在很清楚,如果你仍然感到困惑,那么我build议你阅读一些教程,看laracasts.com和tutsplus.com上的一些屏幕演示 ,并阅读Laravel
的书, 这是一个免费的电子书 ,你可以下载它。
更新:由于OP
想要使用Laravel Hash
手动encryption密码而没有任何类或forms,所以这是一个从命令提示符使用artisan tinker
程序的替代方法:
- 转到您的命令提示符/terminal
- 导航到
Laravel
安装(您的项目的根目录) - 使用
cd <directory name>
并从命令提示符/terminal按Enter键 - 然后写
php artisan tinker
,然后按回车 - 然后编写
echo Hash::make('somestring');
- 你会在控制台上得到一个哈希密码,复制它,然后做你想做的事情。
更新(Laravel 5.x):
// Also one can use bcrypt $password = bcrypt('JohnDoe');
Laravel 5使用bcrypt
。 所以,你也可以做到这一点。
$hashedpassword = bcrypt('plaintextpassword');
输出你可以保存到你的数据库表的密码字段。
Fn Ref: bcrypt
要将密码存储在数据库中,请对密码进行散列,然后保存。
$password = Input::get('password_from_user'); $hashed = Hash::make($password); // save $hashed value
要validation密码,请从数据库获取帐户存储的密码
// $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 }
您可以使用以下内容:
$hashed_password = Hash::make('Your Unhashed Password');
你可以find更多的信息: 在这里
在BcryptHasher.php中你可以find哈希码:
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; }
$pasword = 'user-password'; $hash = password_hash($password, PASSWORD_DEFAULT);
哈希密码与laravel 5.x密码相同。
没有必要给盐和成本,它将采取其默认值。
立即可以用Convert-to-md5.xyz生成
好的,这是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文件并运行它。