Cryptファサードとは
Laravelの暗号化サービスは、OpenSSL の AES-256-CBC 暗号化(または AES-128-CBC)を使って、値の暗号化・復号をシンプルなインターフェースで提供します。 Laravelで暗号化されたすべての値は、メッセージ認証コード(MAC) で署名されています。 これにより、暗号化後の値が改ざんされた場合は復号できなくなります。設定
APP_KEYの生成
暗号化を使う前に、config/app.php の key 設定が必要です。
この値は APP_KEY 環境変数から読み込まれます。
php artisan key:generate コマンドを使って安全なキーを生成してください。
PHPのセキュアな乱数生成器を使って暗号学的に安全なキーが生成されます。
.env ファイルに保存されます。
暗号化キーのローテーション
暗号化キーを変更すると、すべての認証済みユーザーセッションがログアウトされます。 Laravelはセッションクッキーを含むすべてのクッキーを暗号化しているためです。 また、以前のキーで暗号化されたデータは復号できなくなります。 この問題を軽減するため、APP_PREVIOUS_KEYS に古いキーをコンマ区切りで列挙できます。
暗号化
Crypt ファサードの encryptString メソッドを使って値を暗号化します。
暗号化された値はOpenSSLとAES-256-CBC暗号を使用し、MACで署名されます。
復号
Crypt ファサードの decryptString メソッドで暗号化された値を復号します。
MACが無効な場合など、正常に復号できないときは DecryptException がスローされます。
モデルのキャスト
Eloquentモデルでencrypted キャストを使うと、属性の暗号化・復号を自動で行えます。
encrypted:* キャストは内部で Crypt::encrypt と Crypt::decrypt を使用します。
データベースのカラム型は text または longText を推奨します。実用例:個人情報の暗号化保存
個人情報(マイナンバー、クレジットカード番号など)をデータベースに安全に保存する典型的なパターンです。マイグレーション
モデル
コントローラー
まとめ
次のステップ
ハッシュ
パスワードの安全なハッシュ化と検証方法を学びます。
認可
ポリシーとゲートを使ったアクセス制御を解説します。