PHP 登陆密码安全性之比 md5,sha1 更安全性的登陆密

2021-03-19 11:30 jianzhan
文中根据编码案例的方法详细介绍了一款比 md5 数据加密涵数也要安全性的数据加密方式,即登陆密码散列优化算法涵数 password_hash。   大   中   小

引入 PHP 官方网指南的一段话,以下:


为什么例如 md5() 和 sha1() 那样的普遍散列涵数不适感适用在登陆密码维护情景?

MD5,SHA1 及其 SHA256 那样的散列优化算法是朝向迅速、高效率开展散列解决而设计方案的。伴随着技术性发展和测算机硬件配置的提高,破译者可使用 暴力行为 方法来找寻散列码所相匹配的初始数据信息。 

由于当代化测算机能够迅速的 翻转 所述散列优化算法的散列值,因此许多安全性权威专家都明显提议不必在登陆密码散列中应用这种散列优化算法。



PHP 官方网在得出了已不提议用 md5 对登陆密码开展数据加密的同时,也得出了一个更安全性的对登陆密码数据加密的方式,那么就是,登陆密码散列优化算法涵数 password_hash。


下边以简易的申请注册和登陆的小案例来讲解 password_hash 的使用方法。


最先,建立一个客户表,编码以下:

CREATE TABLE `my_user` (
 `user_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT  ID ,
 `user_name` varchar(30) DEFAULT   COMMENT  客户名 ,
 `user_pwd` varchar(60) DEFAULT   COMMENT  登陆密码 ,
 PRIMARY KEY (`user_id`)
)&,编码以下:

 form name= form1  method= post  action= {:url( add )} 
name  input name= user_name  type= text  / 
pwd  input name= user_pwd  type= password  / 
 input name= submit  type= submit  value= GOOOOOOOOOOO  / 
 /form 


储存编码以下:

// 申请注册 加上客户
public function add()
 if(Request()- isPost())
 $data[ user_name ] = input( param.user_name  // 客户名
 $pwd = input( param.user_pwd  // 登陆密码
 $data[ user_pwd ] = password_hash($pwd, PASSWORD_BCRYPT); // 数据加密登陆密码
 $res = Db::name( user )- insertGetId($data);
 if($res)
 $this- success( 加上取得成功 
 else
 $this- error( 加上不成功 
 else
 return $this- fetch();
}
 form name= form1  method= post  action= {:url( login )} 
name  input name= user_name  type= text  / 
pwd  input name= user_pwd  type= password  / 
 input name= submit  type= submit  value= GOOOOOOOOOOO  / 
 /form 


储存编码以下:

// 登陆 客户分辨
public function login()
 if(Request()- isPost())
 $user_name = input( param.user_name  // 客户名
 $pwd = input( param.user_pwd  // 登陆密码
 $enpwd = password_hash($pwd, PASSWORD_BCRYPT); // 数据加密登陆密码
 $user = Db::name( user )- field( user_id, user_name, user_pwd )- where(  user_name =  .$user_name.   )- find();
 if($user[ user_id ]   0)
 // $pwd 键入的登陆密码, $user[ user_pwd ] 数据信息库文件恰当登陆密码
 if(password_verify($pwd, $user[ user_pwd ]))
 echo  登陆取得成功 
 else
 echo  登陆密码不正确,登陆不成功 
 else
 echo  客户名不正确,登陆不成功 
 else
 return $this- fetch();
}



Отдых 2020 в Сергеевке - спокойный отдых на черном море. Во ...