laravel5.4 | 加密/哈希
加密
使用 Laravel 的加密器之前,必须在配置文件config/app.php中设置 key 选项为 32 位随机字符串。可以使用 php artisan key:generate 命令来生成这个key,该 Artisan 命令会使用PHP的安全随机字节生成器来构建 key 的值。 encrypt加密 'secret' => encrypt($request->secret)不进行序列化的加密 加密值在加密期间都会经过
serialize,从而允许对对象和数组的加密,因此,非 PHP 客户端接收的加密数据需要进行unserialize。如果你想要在加密和解密数据时不进行序列化,可以使用 Crypt 门面提供的 encryptString 和 decryptString 方法: use Illuminate\Support\Facades\Crypt;
$encrypted = Crypt::encryptString('Hello world.');
$decrypted = Crypt::decryptString($encrypted); 解密
decrypt 使用辅助函数decrypt 对加密数据进行解密。如果该值不能被解密,例如MAC无效,将会抛出一个Illuminate\Contracts\Encryption\DecryptException异常: use Illuminate\Contracts\Encryption\DecryptException;
try {
$decrypted = decrypt($encryptedValue);
} catch (DecryptException $e) {
//
} 哈希
使用hash门面上的make方法对储存密码进行哈希use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
...
public function update(Request $request)
{
// 验证新密码长度...
$request->user()->fill([
'password' => Hash::make($request->newPassword)
])->save();
} 通过哈希验证 if (Hash::check('plain-text', $hashedPassword)) {
// 密码匹配...
} 检查密码是否需要被重新哈希needsRehash 方法允许你判断哈希计算器使用的工作因子在上次密码被哈希后是否发生改变: if (Hash::needsRehash($hashed)) {
$hashed = Hash::make('plain-text');
} 本站文章如未注明出处均为原创,转载请注明出处,如有侵权请邮件联系站长。