pijin
pijin

Reputation: 23

How to use SHA256 in Laravel

I'm current working on a Laravel project about QR code in a residency. Everytime the home owner fills the details about a guest, the system will generate a unique 6-digit code. Now, I only want to hash the unique code in SHA256, but it's not working. May I get some help?

This is my GuestController:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Guest;
use App\Illuminate\Support\Facades\Hash;
use SimpleSoftwareIO\QrCode\Facades\QrCode;

class GuestController extends Controller
{

    public function create()
    {
        return view('pages.guest.create');
    }

    public function store(Request $request)
    {
        $guest = new Guest;
        $guest->code = random_int(100000, 999999);
        $guest->hash = Hash::make(hash('sha256', $guest['code']));
        $guest->guestname = $request->input('guestname');
        $guest->guestphone = $request->input('guestphone');
        $guest->guestic = $request->input('guestic');
        $guest->guestcar = $request->input('guestcar');
        $guest->datevisit = $request->input('datevisit');
        $guest->timevisit = $request->input('timevisit');
        $guest->save();
        
        return redirect('show-pass')->with('status', 'Guest Added Successfully');
    }

    public function delete($id)
    {
        $guest = Guest::find($id);
        $guest->delete();
        return redirect('show-pass')->with('status', 'Guest Deleted Successfully');
    }

    public function generate($id)
    {
        $guest = Guest::findOrFail($id);
        $qrcode = QrCode::size(150)->generate($guest->code);
        return view('pages.guest.generate', compact('qrcode'));
    }

    public function search(Request $request)
    {
        //Get the search value from the request
        $search = $request->input('search');

        //Search in the code from the list
        $guest = Guest::query()
                ->where('code', 'LIKE', "%{$search}%")
                ->get();
        
        //Return the search view with the results compacted
        return view('pages.guest.search', compact('guest'));

    } 

}

Upvotes: 1

Views: 2889

Answers (1)

D1__1
D1__1

Reputation: 1357

You are creating a sha256 hash and then hash that hash with bcrypt throught Laravel's Hash facade. Laravel's Hash facade only supports bcrypt and Argon2. That explains why you're getting different results.

Just use the vanilla PHP hash() function and remove the Laravel Hash.

$guest->hash = hash('sha256', $guest['code']);

Upvotes: 1

Related Questions