今天要来讲的是 Hash,与前面的加密不同,以上是我了解後整理出 Hash 的特点。
而laravel官方使用 Bcrypt 和 Argon2 散列来存密码,预设是 Bcrypt。
Bcrypt 在Hash中是很好的选择,因为他有 Level 可以调整,在你的 Level 愈高,生成Hash时间就愈长,这个时间长度愈长是好的,这样在黑客在生成彩虹表的时间就愈长,能更有效防止攻击。
因此我们可以来看看这个时间的差异
$start_time = date("H")*3600+date("i")*60+date("s");
$hashed = Hash::make('password', [
'rounds' => 18,
]);
$end_time = date("H")*3600+date("i")*60+date("s");
$time_total = $end_time - $start_time;
echo "执行了:".$time_total."秒";
算一下他的时间,愈下面的时间 rounds 愈大,最下面的 rounds 为18,需要花13秒的时间计算
好,那我们来回顾一下之前我们如何储存密码到资料库中的
User::create([
'account' => $account,
'password' => Hash::make($password),
'name' => Crypt::encryptString($username),
]);
一样是使用 Hash::make 来散列密码,而如何确认输入的密码与资料库相同呢,是利用
Hash::check($password, $user->password)
这样就能知道是否一致,若一致则回传 true,好,今天的Hash就研究到这边。
<<: Day20 - 【概念篇】OAuth flows: Device Code(2)
俗话说的好-工欲善其事,必先利其器 工程师们经过一代又一代的後浪推前浪,前浪死滩上之後 各种文字编辑...
认识串列(List) 所谓的 串列(List) ,就是一串资料,是一种 具有弹性的资料结构 ,资...
这节内容就是应用大致的规划,使用的技术栈以及後台开发环境建立 1. 应用大致的规划 2. 使用的技术...
做完 K 线完成後,就是做均线,常见大盘走势图如下,在这些 K 棒的图上,通常会有数条(通常三条)线...
昨天介绍了自制 two-way binding 的方式,今天要接着看在背後 Angular 为我们做...