نسخه:

رمزگذاری

معرفی

رمزگذار لاراول از OpenSSL برای ارائه رمزگذاری AES-256 و AES-128 استفاده می کند. شما قویاً تشویق می‌شوید که از امکانات رمزگذاری داخلی لاراول استفاده کنید و سعی نکنید الگوریتم‌های رمزگذاری «در خانه» خود را رول کنید. همه مقادیر رمزگذاری شده لاراول با استفاده از کد احراز هویت پیام (MAC) امضا می‌شوند، به طوری که پس از رمزگذاری نمی‌توان مقدار اساسی آنها را تغییر داد.

پیکربندی

قبل از استفاده از رمزگذار لاراول، باید یک گزینه در فایل پیکربندی key خود تنظیم کنید. config/app.php شما باید از php artisan key:generate دستور برای تولید این کلید استفاده کنید زیرا این دستور Artisan از تولید کننده بایت های تصادفی امن PHP برای ساخت کلید شما استفاده می کند. اگر این مقدار به درستی تنظیم نشود، تمام مقادیر رمزگذاری شده توسط لاراول ناامن خواهند بود.

با استفاده از رمزگذار

رمزگذاری یک مقدار

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

<?php
 
namespace App\Http\Controllers;
 
use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;
 
class UserController extends Controller
{
/**
* Store a secret message for the user.
*
* @param Request $request
* @param int $id
* @return Response
*/
public function storeSecret(Request $request, $id)
{
$user = User::findOrFail($id);
 
$user->fill([
'secret' => Crypt::encryptString($request->secret),
])->save();
}
}

رمزگشایی یک مقدار

می توانید مقادیر را با استفاده از decryptString روش نما رمزگشایی کنید Crypt . اگر مقدار را نتوان به درستی رمزگشایی کرد، مانند زمانی که MAC نامعتبر است، یک علامت Illuminate\Contracts\Encryption\DecryptException پرتاب می شود:

use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Support\Facades\Crypt;
 
try {
$decrypted = Crypt::decryptString($encryptedValue);
} catch (DecryptException $e) {
//
}