Может войдёшь?
Черновики Написать статью Профиль

Шифрование

перевод документация 5.х

  1. 1. Настройка
  2. 2. Основы использования
Этот перевод актуален для англоязычной документации на (ветка 5.2) , (ветка 5.1) и (ветка 5.0). Опечатка? Выдели и нажми Ctrl+Enter.

Настройка

Перед использованием шифрования Laravel обязательно задайте случайный 32-значный ключ key в файле config/app.php. Иначе все зашифрованные значения не будут безопасными.

Основы использования

Шифрование значения

Вы можете зашифровать значение с помощью фасада Crypt. Все значения шифруются с помощью OpenSSL и шифра AES-256-CBC. Более того, все шифрованные значения подписаны кодом аутентификации сообщения (MAC — message authentication code) для обнаружения любых изменений в зашифрованной строке.

Например, мы можем использовать метод PHPencrypt() для шифрования секретных данных и сохранения их в Eloquent модели:

PHP
<?php

namespace App\Http\Controllers;

use 
Crypt;
use 
App\User;
use 
Illuminate\Http\Request;
use 
App\Http\Controllers\Controller;

class 
UserController extends Controller
{
  
/**
   * Сохранение секретного сообщения для пользователя.
   *
   * @param  Request  $request
   * @param  int  $id
   * @return Response
   */
  
public function storeSecret(Request $request$id)
  {
    
$user User::findOrFail($id);

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

При шифровании значения подвергаются «сериализации», что позволяет шифровать объекты и массивы. Поэтому при получении шифрованных значений клиентам «без PHP» необходимо будет «десериализовать» данные.

Расшифровка значения

Само собой, вы можете расшифровать значение при помощи метода PHPdecrypt() фасада Crypt. Если значение не может быть корректно расшифровано, например, при неверном MAC, будет выброшено исключение Illuminate\Contracts\Encryption\DecryptException:

PHP
use Illuminate\Contracts\Encryption\DecryptException;

try {
  
$decrypted Crypt::decrypt($encryptedValue);
} catch (
DecryptException $e) {
  
//
}
+ 5.0

добавлено в 5.0 ()

Laravel предоставляет средства для надёжного шифрования по алгоритму AES с помощью расширения mcrypt для PHP.

Шифрование строки

PHP
$encrypted Crypt::encrypt('секрет');

Расшифровка строки

PHP
$decrypted Crypt::decrypt($encryptedValue);

Изменение алгоритма и режима шифрования

PHP
Crypt::setMode('ctr');

Crypt::setCipher($cipher);

Написать комментарий

Разметка: ? ?

Авторизуйся, чтобы прокомментировать.