Laravelの暗号化を利用する場合、config/app.php 設定ファイルのkeyオプションをセットする必要がある。
config/app.php
/*
|--------------------------------------------------------------------------
| Encryption Key
|--------------------------------------------------------------------------
|
| This key is used by the Illuminate encrypter service and should be set
| to a random, 32 character string, otherwise these encrypted strings
| will not be safe. Please do this before deploying an application!
|
*/
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',
実際の値は.envのAPP_KEYから取得している。
でもってキーの生成は php artisan key:generateコマンド を利用する。
php artisan key:generateを実行すると.envのAPP_KEYが設定される。
.env
APP_KEY=base64:UiWyOMux7Y5glbBMtpcACuNBhT+WRyk11emf9X/r8EU=
暗号化
encrypt()
暗号化はヘルパ関数のencrypt()を利用する
var_dump(encrypt('123456789'));
// string(216) "eyJpdiI6IjFBWXlhUmN4K2RjUk5lUldZd3VwM1E9PSIsI..."
Crypt::encrypt()
Cryptファサードを利用することもできる。同じ値を暗号化しても同じ値は返らない。
use Illuminate\Support\Facades\Crypt;
var_dump(Crypt::encrypt('123456789'));
// string(216) "eyJpdiI6IjFBWXlhUmN4K2RjUk5lUldZd3VwM1E9PSIsI..."
復号化
encrypt()
復号化はヘルパ関数のdecrypt()を利用する
var_dump(decrypt('eyJpdiI6IjFBWXlhUmN4K2RjUk5lUldZd3VwM1E9PSIsI...'));
// string(9) "123456789"
Crypt::decrypt()
Cryptファサードを利用して復号化することもできる。
use Illuminate\Support\Facades\Crypt;
var_dump(Crypt::decrypt('eyJpdiI6IjFBWXlhUmN4K2RjUk5lUldZd3VwM1E9PSIsI...'));
// string(9) "123456789"