مشخصات مقاله
-
1508
-
0.0
-
4891
-
0
-
0
آموزش رمزنگاری (Hashing) در لاراول
رمزنگاری (Hashing)
- مقدمه
- نحوه ی استفاده
مقدمه
فریم ورک Laravel با ارائه ی Facade ای به نام Hash این امکان را می دهد تا گذرواژه های کاربری را با روش رمزنگاری و هشینگ Bcryptذخیره نمایید. اگر از کنترلر AuthController استفاده می کنید، بد نیست بدانید این کلاس برای فرایند های registration (ثبت) وauthentication (سنجش هویت) به صورت پیش فرض از الگوریتم Bcrypt استفاده می کند.
از آنجایی که در الگوریتم Bcrypt با افزایش توان سخت افزاری مدت زمان مورد نیاز برای تولید رمز هش شده نیز قابل افزایش می باشد، گفته می شود که Bcrypt گزینه ای مناسب جهت استفاده در رمزنگاری گذرواژه (hashing پسورد) تلقی می شود (به دلیل قابلیت تنظیم work factorالگوریتم ذکر شده، می توان گفت که Bcrypt بهترین انتخاب برای رمزنگاری کلمه ی عبور کاربری می باشد. work factor به مقدار زمان لازم برای گشودن رمز اشاره دارد).
نحوه ی استفاده
می توان با فراخوانی متد make در فاساد Hash، گذرواژه ی مورد نظر را رمز نگاری نمود:
<?php
namespace App\Http\Controllers;
use Hash;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* Update the password for the user.
*
* @param Request $request
* @param int $id
* @return Response
*/
public function updatePassword(Request $request, $id)
{
$user = User::findOrFail($id);
// Validate the new password length...
$user->fill([
'password' => Hash::make($request->newPassword)
])->save();
}
}
برای این منظور همچنین می توان از تابع کمکی سراسری (helper function) bcrypt استفاده نمود:
bcrypt('plain-text');
بررسی و تطبیق یک گذرواژه (رشته ی ساده) با یک رشته ی رمزنگاری شده
متد check این امکان را به شما می دهد تا یک رشته حاوی متن ساده را با رمز هش شده (رشته ی رمزنگاری شده) مقایسه کرده و به تطبیق یا عدم تطبیق آن ها پی ببرید. هرچند اگر از AuthController استفاده کنید، دیگر نیازی به فراخوانی مستقیم این متد نخواهید داشت زیرا کنترلر سنجش هویت نام برده خودش این متد را به صورت اتوماتیک صدا می زند:
if (Hash::check('plain-text', $hashedPassword)) {
// The passwords match...
}
بررسی اینکه آیا یک گذرواژه نیاز به رمزنگاری مجدد دارد
تابع needsRehash به شما این اجازه را می دهد تا بررسی کنید آیا work factor مورد استفاده ی hasher از زمانی که گذرواژه برای اولین بارهش شده تغییر کرده یا خیر (work factor به مدت زمان لازم برای گشودن رمز اشاره دارد):
if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('plain-text');
}