見出し画像

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に違う値を入れるとしっかり一致しないが出力されますね。


ハッシュ簡単に使えるのがありがたいです。

この記事が気に入ったらサポートをしてみませんか?