Laravel学習記録 #034 Hashファサードを学ぶ
LaravelのHashファサードについて学習したものをまとめています。
Hashファサードについて
パスワードの安全な保存や検証を簡単に行うことができる
標準でBcryptおよびArgon2(argon, argon2id)の2種類
Hashファサードのmakeメソッドでパスワードを生成
Hashファサードのcheckメソッドでパスワードを検証
試してみる
簡単にパスワードの生成と検証を行なってみます。
設定
/config/hashing.php で行います。
標準ではbcryptが設定されているようです。
// 設定
'driver' => 'bcrypt',
// オプション
'bcrypt' => [
'rounds' => env('BCRYPT_ROUNDS', 10),
],
//オプション
'argon' => [
'memory' => 65536,
'threads' => 1,
'time' => 4,
],
driverを変更することで、argon2に変更されます。
'driver' => 'argon',
または
'driver' => 'argon2id',
ファサード
makeメソッドで生成してみます。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
class HashController extends Controller
{
public function makePassword()
{
$password = 'password';
$hashedPassword = Hash::make($password);
return $hashedPassword;
}
}
生成結果は以下になりました。
// bcrypt
$2y$10$Y0F06nGanePYpvvov3Qdwu1eprlNkHqYr5tmqC1ZzeDlpO7VFS1kq
// argon
$argon2i$v=19$m=65536,t=4,p=1$Vlpudk9KSXhlTEpDaTd1Wg$69ndxm1s4yMnzStIlBQJpobdpDleTKsBZfL6yzNHt7E
// argon2id
$argon2id$v=19$m=65536,t=4,p=1$Qm1RWnBkL2N2ZjJ1T2RYWg$AagocRoN7XVnNB6MXgz03r3fJUaDnRrbMdd0zsaeNrQ
簡単に生成できますね。
続いてcheckメソッドで検証してみます。
public function checkPassword()
{
$password = 'password';
$hashedPassword = Hash::make($password);
$isMatch = Hash::check($password, $hashedPassword);
if ($isMatch) {
return "パスワード一致";
} else {
return "パスワード一致しない";
}
}
パスワード一致が出力されます。
checkメソッドの引数の$passwordに違う値を入れるとしっかり一致しないが出力されますね。
ハッシュ簡単に使えるのがありがたいです。
この記事が気に入ったらサポートをしてみませんか?