Laravel (5,7) Шифрование
Шифрование - это процесс преобразования простого текста в сообщение с использованием некоторых алгоритмов, так что любой третий пользователь не может прочитать информацию. Это полезно для передачи конфиденциальной информации, поскольку у злоумышленника меньше шансов нацелиться на передаваемую информацию.
Шифрование выполняется с использованием процесса под названием Криптография . Текст, который должен быть зашифрован, называется простым текстом, а текст или сообщение, полученное после шифрования, называется шифрованным текстом . Процесс преобразования зашифрованного текста в обычный текст называется расшифровкой .
Laravel использует шифрованные AES-256 и AES-128 , которые используют Open SSL для шифрования. Все значения, включенные в Laravel, подписаны с использованием протокольного кода аутентификации сообщений, поэтому базовое значение не может быть подделано после его шифрования.
конфигурация
Команда, использованная для генерации ключа в Laravel, показана ниже -
php artisan key:generate
Обратите внимание, что эта команда использует генератор безопасных случайных байтов PHP, и вы можете увидеть результат, как показано на скриншоте ниже -
Приведенная выше команда помогает в создании ключа, который можно использовать в веб-приложении. Посмотрите на скриншот, показанный ниже.
Заметка
Значения для шифрования должным образом выровнены в файле config / app.php , который включает в себя два параметра для шифрования, а именно ключ и шифр . Если значение, использующее этот ключ, не выровнено должным образом, все значения, зашифрованные в Laravel, будут небезопасными.
Процесс шифрования
Шифрование значения может быть выполнено с помощью помощника шифрования в контроллерах класса Laravel. Эти значения шифруются с использованием OpenSSL и шифра AES-256. Все зашифрованные значения подписаны кодом аутентификации сообщений (MAC) для проверки любых изменений зашифрованной строки.
Показанный ниже код упоминается в контроллере и используется для хранения секретного или конфиденциального сообщения.
<?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();
}
}
Процесс дешифрования
Расшифровка значений выполняется с помощью помощника расшифровки . Соблюдайте следующие строки кода -
use Illuminate\Contracts\Encryption\DecryptException;
// Exception for decryption thrown in facade
try {
$decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
//
}
Обратите внимание, что если процесс расшифровки не был успешным из-за использования недопустимого MAC-адреса, выдается соответствующее исключение.
Предыдущая: Laravel (5.7) Авторизация
Далее: Laravel (5.7) Хеширование
Новый контент: Composer: менеджер зависимостей для PHP , R программирования