* * * * *
[TOC]
## 简介
Laravel 的加密机制使用 OpenSSL 提供 AES-256 和 AES-128 的加密。强烈建议你使用 Laravel 内置的加密机制,而不是用其他的加密算法。所有 Laravel 加密之后的结果都会使用消息认证码 (MAC) 去签名,使其底层值不能在加密后修改。
## 设置
在使用 Laravel 加解密程序之前,你必须在配置文件 `config/app.php` 中设置 APP_KEY 的值。运行 Artisan 命令`php artisan key:generate`,他会使用PHP的安全随机字节生成器来构建密钥。如果这个 `key` 值没有被正确的设置,所有由 Laravel 加密的值都是不安全的。
## 使用
#### 加密一个值
你可以使用辅助函数`encrypt`来加密一个值。 所有的加密值都使用 OpenSSL 和 `AES-256-CBC` 来进行加密。 此外, 所有加密过的值都会使用消息认证码 (MAC)来进行签名,以检测加密字符串是否被篡改过 :
~~~
<?php
namespace App\Http\Controllers;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* 存储用户保密信息
*
* @param Request $request
* @param int $id
* @return Response
*/
public function storeSecret(Request $request, $id)
{
$user = User::findOrFail($id);
$user->fill([
'secret' => encrypt($request->secret)
])->save();
}
}
~~~
#### 无序列化加密
加密过程中加密的值通过`serialize`传递,他允许加密对象和数组。因此, 接收加密值的非 PHP客户端将需要`unserialize` 这个数据。如果想在不序列化的情况下加密和解密值,你可以使用`Crypt` facade的`encryptString` 和 `decryptString` 方法:
~~~
use Illuminate\Support\Facades\Crypt;
$encrypted = Crypt::encryptString('Hello world.');
$decrypted = Crypt::decryptString($encrypted);
~~~
#### 解密一个值
你可以使用辅助函数 `decrypt` 来解密一个值。如果该值不能够被正确解密, 例如当MAC(消息认证码)无效时,就会抛出异常 `Illuminate\Contracts\Encryption\DecryptException` :
~~~
use Illuminate\Contracts\Encryption\DecryptException;
try {
$decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
//
}
~~~
- 前言
- 翻译说明
- 发行说明
- 升级指南
- 贡献导引
- 入门指南
- 安装
- 配置信息
- 文件夹结构
- Homestead
- Valet
- 部署
- 核心架构
- 请求周期
- 服务容器
- 服务提供者
- Facades
- Contracts
- 基础功能
- 路由
- 中间件
- CSRF 保护
- 控制器
- 请求
- 响应
- 视图
- URL
- Session
- 表单验证
- 错误
- 日志
- 前端开发
- Blade 模板
- 本地化
- 前端指南
- 编辑资源 Mix
- 安全相关
- 用户认证
- Passport OAuth 认证
- 用户授权
- 加密解密
- 哈希
- 重置密码
- 综合话题
- Artisan 命令行
- 广播系统
- 缓存系统
- 集合
- 事件系统
- 文件存储
- 辅助函数
- 邮件发送
- 消息通知
- 扩展包开发
- 队列
- 任务调度
- 数据库
- 快速入门
- 查询构造器
- 分页
- 数据库迁移
- 数据填充
- Redis
- Eloquent ORM
- 快速入门
- 模型关联
- Eloquent 集合
- 修改器
- API 资源
- 序列化
- 测试相关
- 快速入门
- HTTP 测试
- 浏览器测试 Dusk
- 数据库测试
- 测试模拟器
- 官方扩展包
- Cashier 交易工具包
- Envoy 部署工具
- Horizon
- Scout 全文搜索
- Socialite 社会化登录