Encryp trong Laravel 6

Giới thiệu

Bộ mã hóa Laravel sử dụng là OpenSSL, cung ứng những loại mã hóa AES-256 và AES-128. Bạn được khuyến khích sử dụng những mạng lưới hệ thống mã hóa đi kèm với Laravel và đừng nỗ lực tạo ra những thuật toán mã hóa ” home grown ” của riêng bạn. Tất cả những giá trị được mã hóa bởi Laravel đều được ký bằng message authentication code ( MAC ) để không hề bị sửa đổi giá trị của chúng sau khi đã được mã hóa .

Cấu hình

Trước khi sử dụng bộ mã hóa của Laravel, bạn cần phải cài đặt tùy chọn key trong file cấu hình config/app.php của bạn. Bạn nên sử dụng lệnh php artisan key:generate để tạo key này vì lệnh Artisan này sẽ sử dụng trình tạo byte ngẫu nhiên an toàn của PHP để tạo key cho bạn. Nếu giá trị này không được cài đặt đúng cách, tất cả các giá trị được mã hóa bởi Laravel sẽ không an toàn.

Bạn đang đọc: Encryp trong Laravel 6

Dùng Encrypter

Encrypting A Value

Bạn có thể mã hóa một giá trị bằng cách sử dụng helper encrypt. Tất cả các giá trị mã hóa đều được mã hóa bằng OpenSSL và mật mã AES-256-CBC. Hơn nữa, tất cả các giá trị mã hóa mà được ký bằng message authentication code (MAC) đều có thể phát hiện bất kỳ sửa đổi nào đối với giá trị đã được mã hóa:

fill([
            'secret' => encrypt($request->secret),
        ])->save();
    }
}

Encrypting Without Serialization

Các giá trị đã được mã hóa sẽ được truyền qua serialize trong quá trình mã hóa, cho phép bạn mã hóa các đối tượng và mảng. Do đó, các client không phải là PHP nếu nhận được các giá trị đã mã hóa sẽ cần phải unserialize dữ liệu. Nếu bạn muốn mã hóa và giải mã các giá trị mà không cần qua serialization, bạn có thể sử dụng các phương thức encryptStringdecryptString của facade Crypt:

use Illuminate\Support\Facades\Crypt;

$encrypted = Crypt::encryptString('Hello world.');

$decrypted = Crypt::decryptString($encrypted);

Decrypting A Value

Bạn có thể giải mã các giá trị bằng cách sử dụng helper decrypt. Nếu giá trị không thể được giải mã chính xác, chẳng hạn như khi MAC không hợp lệ, một Illuminate\Contracts\Encryption\DecryptException sẽ được tạo ra:

use Illuminate\Contracts\Encryption\DecryptException;

try {
    $decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
    //
}
Encryp trong Laravel 6

Bài viết liên quan
Hotline 24/7: O984.666.352
Alternate Text Gọi ngay