Cum criptezi si decriptezi intr-o aplicatie Laravel

Configurare noua (How To)

Situatie

Serviciile de criptare Laravel oferă o interfață simplă și convenabilă pentru criptarea și decriptarea textului prin OpenSSL folosind criptarea AES-256 și AES-128. Toate valorile criptate ale Laravel sunt semnate folosind un cod de autentificare a mesajelor (MAC), astfel încât valoarea lor subiacentă să nu poată fi modificată sau modificată odată criptată.

Solutie

Înainte de a utiliza codificatorul Laravel, trebuie să setați opțiunea de configurare a cheii în fișierul de configurare config/app.php. Această valoare de configurare este determinată de variabila de mediu APP_KEY. Ar trebui să utilizați comanda php artisan key:generate pentru a genera valoarea acestei variabile, deoarece comanda key:generate va folosi generatorul PHP securizat de octeți aleatori pentru a construi o cheie sigură criptografic pentru aplicația dvs. De obicei, valoarea variabilei de mediu APP_KEY va fi generată pentru dvs. în timpul instalării lui Laravel.

<?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();
  }}

Puteți cripta o valoare folosind metoda encryptString oferită de fațada Crypt. Toate valorile criptate sunt criptate folosind OpenSSL și cifrul AES-256-CBC. În plus, toate valorile criptate sunt semnate cu un cod de autentificare a mesajelor (MAC). Codul de autentificare a mesajului integrat va împiedica decriptarea oricăror valori care au fost modificate de utilizatori rău intenționați:

use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Support\Facades\Crypt;

try {
  $decrypted = Crypt::decryptString($encryptedValue);
} catch (DecryptException $e) {
  //
}

Puteți decripta valori folosind metoda decryptString oferită de fațada Crypt. Dacă valoarea nu poate fi decriptată corect, cum ar fi atunci când codul de autentificare al mesajului este invalid, va fi lansată o excepție Illuminate\Contracts\Encryption\DecryptException.

Tip solutie

Permanent

Voteaza

(10 din 20 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?