آموزش کامل رمزنگاری و رمزگشایی در لاراول با مثال
رمزگذاری (Encryption ) ، فرآیند تبدیل یک متن ساده به یک پیام با استفاده از برخی از الگوریتم ها است، به طوری که هیچ شخص سومی، به غیر از مبدا و مقصدِ پیام، نمی تواند اطلاعات را بخواند.
این امر برای انتقال اطلاعات حساس مفید است. زیراهکرها، به هنگام انتقال اطلاعات بین مبدا و مقصد، شانس کمتری برای دسترسی به اطلاعات، خواهند داشت.
رمزگذاری با استفاده از یک فرایند به نام Cryptography انجام می شود.
متنی که باید رمزگذاری شود، به عنوان متن ساده (Plain Text) نامیده می شود و متن یا پیامی که پس از رمزگذاری به دست می آید، سایفر یا Cipher Text نامیده می شود. فرآیند تبدیل متن رمز(Cipher Text) به متن ساده (Plain Text)، رمزگشایی یا Decryption نامیده می شود.
Laravel از رمزنگاری AES-256 و AES-128 و با استفاده از open SSL برای رمزگذاری استفاده می کند.
تمام مقادیر موجود در Laravel با استفاده از پروتکل «کد تایید پیام» یا Message Authentication Code یا MAC ، امضا شده اند تا هرگونه تغییر، در رشته رمزگذاری شده قابل تشخیص باشد.
پیکربندی
دستور استفاده شده برای تولید کلید در Laravel در زیر نشان داده شده است.
php artisan key:generate
این دستور، با استفاده از generator یا تولید کننده ی بایت های تصادفی و امن در php، یک کلید (key) تولید می کند. شما می توانید خروجی را در تصویر پایین مشاهده نمایید.
دستور داده شده در بالا، برای ایجاد کلیدی که می تواند در برنامه وب استفاده شود، به کار گرفته می شود.
نکته
قبل از استفاده از سیستمِ رمزنگاری لاراول، باید در فایلِ پیکربندی config / app.php، مقادیر لازم برای رمزگذاری را وارد کنید.
که شامل دو پارامتر برای رمزگذاری یعنی key و cipher است.
اگر مقدار key را درست تنظیم نکنید، تمامی مقادیر رمزگذاری شده در Laravel، ناامن خواهند بود.
فرآیند رمزنگاری (Encryption)
در لاراول می توان، یک مقدار را با استفاده از تابع کمکی encrypt، در کلاس های Controller، رمزنگاری کرد.
این مقادیر با استفاده از OpenSSL و AES-256 رمزگذاری می شوند. تمامی مقادیر رمز شده با «کدِ تأییدِ پیام (MAC)» امضا شده اند، تا بتوانند هر تغییری در رشته رمزنگاری شده را تشخیص دهند.
کد زیر در یک controller آورده شده است و برای ذخیره یک پیام مخفی یا حساس استفاده می شود.
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class DemoController 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' => encrypt($request->secret)
])->save();
}
}
فرایند رمزگشایی (Decryption)
رمزگشایی یک مقدار، با تابع کمکی decrypt helper انجام می شود . کدهای زیر را مشاهده کنید .
use Illuminate\Contracts\Encryption\DecryptException;
// Exception for decryption thrown in facade
try {
$decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
//
}
لطفا توجه داشته باشید، که اگر فرایند رمزگشایی به دلیل استفاده از MAC نامعتبر به درستی انجام نگیرد، در آن صورت خطای Illuminate\Contracts\Encryption\DecryptException صادر می شود.
این فصل در یک نگاه:
آشنایی با امکانات جدید لاراول ۷…
برخی از سرفصل های این پکیج آموزشی : لاراول چیست و چرا ما لاراول استفاده میکنیم کامپوزر کارش چیه و نصب اون نصب لاراول آموزش نصب لاراول از طریق اینستالر آموزش نصب لاراول با استفاده ا…این فصل در یک نگاه:
بهترین و پر بازده ترین روش تبدیل بازدیدکننده سایت به مشتری تبلیغات هدفمند و برند سازی هوشمندانه با ایمیل می باشد. ایمیل…
وبینار(سمینار آنلاین) آموزش تکنیک های ایمیل مارکتینگ اگر تا انتها این متن را مطالعه کنید نظر شما در مورد ایمیل مارکتینگ 180 درجه عوض می شود!! بر هیچکس پوشیده نیست که از سال 1972 که ای…این فصل در یک نگاه:
مباحث تکمیلی فریم ورک لاراول…
فصل اول :آموزش مقدماتی فریم ورک لاراول معرفی فریم ورک لاراول و پیشنیازهای انجام کار انجام کانفیگ های اولیه برای نصب و راه اندازی فریم ورک معرفی روش های نصب پروژه لاراولی از طریق سایت گی…این فصل در یک نگاه:
مباحث مقدماتی فریم ورک react.js…
توضیحات کلی مجموعه: فصل اول : آشنایی با مباحث مقدماتی فریم ورک react.js نصب و راه اندازی node.js و کلیه پیش نیازهای لازم نصب فریم ورک react روی لوکال و انجام تست های لازم آغاز آشنایی …