密码加密问题

Hash::make('111');//长度为60位字符

如果我把这个数据库给别人用别的框架开发。那么他怎么样验证密码
已邀请:
注意:以下函数php >= 5.5才能使用哦
PHP5.5 提供了许多新特性及Api函数,其中之一就是Password Hashing API(创建和校验哈希密码)。

那么Hash::make();就是使用了下面的代码具体实现的加密:
$hash = password_hash($value, PASSWORD_BCRYPT, array('cost' => $cost)); 

然后这里的$cost呢在框架中默认是10,所以你在其它非laravel里验证的时候使用上面的方法生成密码。然后使用password_verify对比密码:

语法:
bool password_verify ( string $password , string $hash )


举例:
if (password_verify($pwd, '$2y$10$4kAu4FNGuolmRmSSHgKEMe3DbG5pm3diikFkiAKNh.Sf1tPbB4uo2')) { 
echo "密码正确";
} else {  
echo "密码错误";
}

$pwd 为用户的输入密码,比如123456

更多请参考:

qufo

赞同来自:

前期正好搞过这一破事儿,为了跟discuz的密码兼容。汗。

原始的代码在 \vendor\laravel\framework\src\Illuminate\Hashing\BcryptHasher.php 。内容一目了然。

discuz 的加密是 先md5, 加盐,再md5。

不得已实现了 HasherInterface 弄了个 discuzHasher ,重新把 hash 绑定到这个 discuzHasher 上而不是 BcryptHash, 然后改make,check 加参数。

世界终于清静了。

要回复问题请先登录注册