نسخه:

رمزگذاری

معرفی

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

پیکربندی

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

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

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

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

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

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

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

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