# 加解密机制
- [配置](#configuration)
- [基本用法](#basic-usage)
## 配置
在使用 Lumen 的加解密前,你应该把 `.env` 文件中的 `APP_KEY` 选项设置为 32 位随机字符串。如果没有适当地设置这个值,所有被 Lumen 加密的值都将是不安全的。
## 基本用法
#### 加密一个值
你可以使用 `Crype` 门面来对一个值加密。所有加密的值都是用 `OPenSSL` 和 `AES-256-CBC` 来进行加密。此外, 所有加密过的值都会使用消息认证码 (MAC)来进行签名,以检测加密字符串是否被篡改过 :
例如,我们可以使用 encrypt 方法加密机密信息,并把它保存在 [Eloquent 模型](http://laravel.com/docs/eloquent):
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) {
//
}