رمزگذاری
معرفی
رمزگذار لاراول از 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) { //}