加密
设置
在使用 Laravel 的加密功能前,你需要先为 config/app.php 配置文件中的 key 参数设置一个值,这个值是一个包含 32 个随机字符的字符串。如果这个值没有正确设置,所有由 Laravel 加密的数据都是不安全的。
基本用法
加密
通过 Crypt facade 可以加密一段数据。所有加密采用的都是 OpenSSL 和 AES-256-CBC cipher。并且,所有加密过的数据都会被赋予一个“信息验证码”(MAC),以防被加密后所得到的字符串被篡改。
如下例,我们使用 encrypt 方法将加密过的数据存入 Eloquent model:
<?phpnamespace App\Http\Controllers;use Crypt;use App\User;use Illuminate\Http\Request;use App\Http\Controllers\Controller;class UserController extends Controller{/*** Store a secret message for the user.** @param Request $request* @param int $id* @return Response*/public function storeSecret(Request $request, $id){$user = User::findOrFail($id);$user->fill(['secret' => Crypt::encrypt($request->secret)])->save();}}
解密
当然,你可以使用 Crypt 中的 decrypt 方法进行解密。如果解密失败,例如 MAC 被篡改了,将会抛出 Illuminate\Contracts\Encryption\DecryptException 异常:
use Illuminate\Contracts\Encryption\DecryptException;try {$decrypted = Crypt::decrypt($encryptedValue);} catch (DecryptException $e) {//}
