کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش Encryption (رمز نگاری) در لاراول

`

Encryption (رمز نگاری) در Laravel

  1. تنظیم و کانفیگ
  2. نحوه ی استفاده از رمزنگاری

تنظیم و کانفیگ

برای اینکه بتوان از سرویس رمزنگاری لاراول استفاده ی بهینه نمود، بایستی گزینه ی key از فایل تنظیمات و کانفیگ config/app.php را با یک رشته ی تصادفی با طول 32 کاراکتر مقداردهی نمایید. اگر این مقدار به درستی تنظیم نشود، در آن صورت تمامی مقادیر رمزگذاری شده توسطLaravel ناامن خواهد بود.

نحوه ی استفاده از رمزنگاری

رمزنگاری و encryption یک مقدار ساده

جهت رمزنگاری مقدار دلخواه می توانید از یک facade به نام Crypt بهره بگیرید. تمامی مقادیر encrypt شده به وسیله ی OpenSSL و سایفر (cipher) AES-256-CBC رمزگذاری می شوند. بعلاوه مقادیر encrypt شده همگی با یک MAC (کد سنجش اعتبار و هویت پیام) امضا و علامت گذاری می شوند تا بدین وسیله امکان تشخیص هرگونه تغییراتی که به رشته ی رمزنگاری شده وارد می شود، فراهم آید.
در زیر با فراخوانی متد encrypt یک پیغام محرمانه را رمزنگاری کرده و سپس آن را در مدل Eloquent برنامه ی کاربردی خود ذخیره می کنیم:

<?php
namespace App\Http\Controllers;
use Crypt;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
   
   public function storeSecret(Request $request, $id)
   {
       $user = User::findOrFail($id);
 
       $user->fill([
           'secret' => Crypt::encrypt($request->secret)
       ])->save();
   }
}
نکته:

مقادیر encrypt شده در طی فرایند رمزنگاری از طریق serialize پاس داده می شوند که امکان رمزنگاری اشیا و آرایه ها را فراهم می سازد. از اینرو سرویس گیرندگان غیر-PHP که این مقادیر encrypt شده را دریافت می کنند، بایستی با استفاده از unserialize داده ها را از این حالت خارج نمایند.

رمزگشایی یک مقدار (Decryption)

برای رمزگشایی مقادیر نیز کافی است تابع decrypt را در فاساد Crypt فراخوانی نمایید. اگر مقدار مورد نظر ،مانند زمانی که MAC نامعتبر است، به درستی قابل رمزگشایی نباشد، در آن صورت خطای Illuminate\Contracts\Encryption\DecryptException صادر می شود:

use Illuminate\Contracts\Encryption\DecryptException;
try {
   $decrypted = Crypt::decrypt($encryptedValue);
} catch (DecryptException $e) {
   //
}
1395/03/06 4711 1613
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...