Laravelで暗号化・復号化をする方法って?
今僕が業務で開発しているシステムでパスワードをDBに格納するのですが、その時に暗号化をしたいわけです。
当然、取得する際は復号化してあげないといけないので、その辺りを少し調べてみました。
僕のプロフィールはこちら
目次
Laravelでの暗号化について
Laravelでは、暗号化の仕組みが用意されています。
なので、実装自体はすごく簡単です。
暗号化の必要性について
暗号化をする必要性って何でしょう?
例えば、ログインユーザのパスワードなどをDBに持つ場合、パスワードをそのままDBに格納するのはセキュリティ的に問題がありますよね。
なので、暗号化された値を格納し、セキュリティ的問題を回避します。
Laravelでの暗号化方式について
暗号化と一口に言っても様々な手法があります。
Laravelで用意されている仕組みを使用すると、暗号化方式は「AES-256-CBC」方式となります。
Laravelでの暗号化・復号化実装
Laravelでは以下のように実装します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php namespace App\Http\Controllers; use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Routing\Controller as BaseController; use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Crypt; class Controller extends BaseController { use AuthorizesRequests, DispatchesJobs, ValidatesRequests; /** * 暗号化処理 * * @param $value 暗号化前の値 * @return 暗号化後の値 */ public function decrypt($value) { return Crypt::decrypt($value); } /** * 復号化処理 * * @param $value 復号化前の値 * @return 復号化後の値 */ public function encrypt($value) { return Crypt::encrypt($value); } } |
暗号化・復号化処理を「Controller.php」に記載しました。
「Crypt」を使用するだけで簡単に実装ができてしまいます。
Laravelで暗号化される値について
Laravelで暗号化された値についてですが、同じ値を暗号化しても暗号化された文字列は同じになりません。
なので、暗号化された値を比較してもイコールにはならないので注意してください。
おすすめ書籍
僕はLaravelの勉強をするのに以下の書籍を購入しました。おすすめですよ!
まとめ
Laravelでの暗号化・復号化は非常に簡単でしたね。
今の時代セキュリティについては非常にうるさいので、暗号化くらいはしておきましょう!
ではまた!