SHA512和checkhash上的自定义盐 - PhalconPHP
public function beforeSave(){
$salt = "Acrec_$";
$hashed = hash('sha512', $salt . $this->password);
$this->password = $hashed;
}
我正在使用自定义Salt和自定义哈希来加密用户密码,但现在我需要登录用户。SHA512和checkhash上的自定义盐 - PhalconPHP
里面的代码loginAction();
$this->auth->check([
'email' => $this->request->getPost('email'),
'password' => $this->request->getPost('password'),
'remember' => $this->request->getPost('remember')
]);
在尔康只需使用:
$password = $this->request->getPost('password');
$user->password = $this->security->hash($password);
而且
$password = $this->request->getPost('password');
$user = Users::findFirst();
if ($this->security->checkHash($password, $user->password)) {
// any logic here
}
通过它使用bcrypt具有盐内置的默认。
链接[尔康安全散列(https://olddocs.phalconphp.com/en/3.0.0/ reference/security.html),它与['password_hash'](http://php.net/manual/en/function.password-hash.php)和['password_verify'](http://php.net) /manual/en/function.password-verify.php)。如果这是比'password_hash'更好的选择/''password_verify'是未知的。 – zaph
无论如何,它使用password_hash和password_verify。只是OOP包装他们与其他方法安全的东西,如一些randomizer,csrf等 – Juri
随着PHP使用password_hash
和password_verify
,一对是安全和易于使用。
仅使用散列函数保存密码验证者是不够的,仅仅添加盐对提高安全性没有多大作用。相反,用随机盐迭代HMAC约100ms持续时间,然后用散列表保存盐。更好的是使用诸如PBKDF2
,Rfc2898DeriveBytes
,password_hash
,Bcrypt
,passlib.hash
或类似功能的功能。关键是要让攻击者花费大量时间通过暴力破解密码。
盐应该是每个用户都是独一无二的。此外,您不应该使用单个哈希轮来保护密码,您应该使用诸如[bcrypt](https://en.wikipedia.org/wiki/Bcrypt)之类的算法,该算法使用多轮哈希来离线破解不可行。 – Phylogenesis
'$ salt =“Acrec _ $”;'你应该把它放在单引号中。 '$'是php中的一个特殊字符。 –
当我使用bcrypt它返回一个像这样的字符串: 字符串(60) “$ 2Y $ 08 $ bk5kV3BpZjlGanJDOEpPUO0CEBpTmlVAo8iCc5O4YsEk1c7004L8i” –