比如说用户注册后,后台给用户密码MD5加密了在存入数据库,用户在登入的时候输入的密码要与数据库保存的密码对比。我想问的是,用户登入时,后台要把密码用MD5加密后才能与数据库的密码比较吗?
对,确实如此。
实际上MD5加密方式现在并不安全,更好的方式是采用sha1或者使用php提供的
password_hash
函数
string password_hash ( string $password , integer $algo [, array $options ] )
在Laravel框架中就是采用
password_hash
函数对密码进行加密
$cost = isset($options['rounds']) ? $options['rounds'] : $this->rounds;
$hash = password_hash($value, PASSWORD_BCRYPT, ['cost' => $cost]);
if ($hash === false) {
throw new RuntimeException('Bcrypt hashing not supported.');
}
return $hash;
同一个密文,每次生成的hash值是不同的,可以很好地避免撞库攻击等,生成的密码类似于下面这种格式
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
顺便提醒你一下,md5很容易被反向对比出密码。
所以你做md