多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 散列和加密 ### 组态 首次安装October时,应该已经为您生成了一个随机密钥。您可以通过检查配置文件的`key`选项来确认`config/app.php`。如果密钥保持不变,则应将其设置为32个字符的随机字符串。如果未正确设置此值,则所有加密值将不安全。 ### [](https://octobercms.com/docs/services/hashing-encryption#hashing)散列 该`Hash`外观提供用于存储用户密码的安全Bcrypt哈希。Bcrypt是散列密码的绝佳选择,因为它的“工作因子”是可调的,这意味着随着硬件能力的提高,生成散列所花费的时间可以增加。 您可以通过调用外观`make`上的方法来对密码进行哈希处理`Hash`: ~~~ $user = new User; $user->password = Hash::make('mypassword'); $user->save(); ~~~ 或者,模型可以实现[Hashable特征](https://octobercms.com/docs/database/traits#hashable)以自动对属性进行哈希处理。 #### 针对哈希验证密码 该`check`方法允许您验证给定的纯文本字符串是否与给定的哈希相对应。 ~~~ if (Hash::check('plain-text', $hashedPassword)) { // The passwords match... } ~~~ #### 检查是否需要重新输入密码 该`needsRehash`函数允许您确定自哈希密码以来哈希器使用的工作因子是否已更改: ~~~ if (Hash::needsRehash($hashed)) { $hashed = Hash::make('plain-text'); } ~~~ ### [](https://octobercms.com/docs/services/hashing-encryption#encryption)加密 您可以使用`Crypt`外观对值进行加密。所有加密的值都使用OpenSSL和`AES-256-CBC`密码进行加密。此外,所有加密值都用消息认证码(MAC)签名,以检测对加密字符串的任何修改。 例如,我们可以使用该`encrypt`方法对机密进行加密并将其存储在[数据库模型中](https://octobercms.com/docs/database/model): ~~~ $user = new User; $user->secret = Crypt::encrypt('shhh no telling'); $user->save(); ~~~ #### 解密值 当然,您可以使用外观`decrypt`上的方法解密值`Crypt`。如果无法正确解密该值(例如,当MAC无效时),`Illuminate\Contracts\Encryption\DecryptException`将引发异常: ~~~ use Illuminate\Contracts\Encryption\DecryptException; try { $decrypted = Crypt::decrypt($encryptedValue); } catch (DecryptException $ex) { // } ~~~