イントロダクション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 Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Crypt;
class DigitalOceanTokenController extends Controller
{
/**
* ユーザーのDigitalOceanAPIトークンを保存
*/
public function store(Request $request): RedirectResponse
{
$request->user()->fill([
'token' => Crypt::encryptString($request->token),
])->save();
return redirect('/secrets');
}
}
値の復号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) {
// ...
}