イントロダクションIntroduction
Laravelの暗号化サービスは、AES-256およびAES-128暗号化を使用してOpenSSLを介してテキストを暗号化および復号化するためのシンプルで便利なインターフェイスを提供します。Laravelの暗号化された値はすべて、メッセージ認証コード(MAC)を使用して署名されているため、暗号化された値の基になる値を変更したり改ざんしたりすることはできません。Laravel's encryption services provide a simple, convenient interface for encrypting and decrypting text via OpenSSL using AES-256 and AES-128 encryption. All of Laravel's encrypted values are signed using a message authentication code (MAC) so that their underlying value can not be modified or tampered with once encrypted.
設定Configuration
Laravelの暗号化を使用する前に、config/app.php
設定ファイルでkey
設定オプションを設定する必要があります。この設定値は、APP_KEY
環境変数が反映されます。php
artisan
key:generate
コマンドを使用してこの変数の値を生成する必要があります。これは、key:generate
コマンドがPHPの安全なランダムバイトジェネレーターを使用して、アプリケーションの暗号的に安全なキーを構築するためです。通常、APP_KEY
環境変数の値は、Laravelのインストール中に生成されます。Before using Laravel's encrypter,
you must set the key
configuration
option in your config/app.php
configuration file. This configuration value is
driven by the APP_KEY
environment
variable. You should use the php artisan
key:generate
command to generate this
variable's value since the key:generate
command will use PHP's secure random bytes generator
to build a cryptographically secure key for your
application. Typically, the value of the
APP_KEY
environment variable will be
generated for you during Laravel's
installation[/docs/{{version}}/installation].
エンクリプタの使用Using The Encrypter
値の暗号化Encrypting A Value
Crypt
ファサードが提供するencryptString
メソッドを使用して値を暗号化できます。暗号化された値はすべて、OpenSSLとAES-256-CBC暗号を使用して暗号化されます。さらに、暗号化されたすべての値は、メッセージ認証コード(MAC)で署名されます。統合されたメッセージ認証コードは、悪意のあるユーザーにより改ざんされた値の復号化を防ぎます。You may encrypt a value using the
encryptString
method provided by the
Crypt
facade. All encrypted values are
encrypted using OpenSSL and the AES-256-CBC cipher.
Furthermore, all encrypted values are signed with a
message authentication code (MAC). The integrated
message authentication code will prevent the
decryption of any values that have been tampered
with by malicious users:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;
class DigitalOceanTokenController extends Controller
{
/**
* ユーザーのDigitalOceanAPIトークンを保存
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function storeSecret(Request $request)
{
$request->user()->fill([
'token' => Crypt::encryptString($request->token),
])->save();
}
}
値の復号Decrypting A Value
Crypt
ファサードが提供するdecryptString
メソッドを使用して値を復号化できます。メッセージ認証コードが無効な場合など、値を適切に復号化できない場合、Illuminate\Contracts\Encryption\DecryptException
を投げます。You may decrypt values using the
decryptString
method provided by the
Crypt
facade. If the value can not be
properly decrypted, such as when the message
authentication code is invalid, an
Illuminate\Contracts\Encryption\DecryptException
will be thrown:
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Support\Facades\Crypt;
try {
$decrypted = Crypt::decryptString($encryptedValue);
} catch (DecryptException $e) {
//
}